Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2018, 11:19   #1
DrDany
 
Регистрация: 18.11.2018
Сообщений: 3
По умолчанию Нарисовать круг fillOval(x,y,r,r) с пользовательскими параметрами X, Y, R из JTextField

Для простоты кода обойдемся без проверок на исключения, считаем, что всё вводится правильно, а также пока не будем использовать слушателей.
Задача.
Открыть новое окно. В нем Установить элемент JTextField, задающий пользовательский радиус.
Нарисовать в этом же окне круг с произвольным центром в x,y пользовательским радиусом r, полученного из JTextField.


Ниже привожу работающий код с закомментированными конструкциями
(как варианты, оказавшиеся неработающими, но дающие больше представления о том, что хочу сделать).

У меня не получается перейти от String s1 (то, что вводится пользователем) к s2 (из которой должен добываться r ).

Код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class UserCircleJTextField extends JFrame {
	UserCircleJTextField(String s){
		super(s);
		String s1, s2;

		JPanel container = new JPanel();
		container.setLayout(null);
		
		JTextField input = new JTextField("13",12); // работаем без слушателя, поэтому сразу задаем некоторое значение, например "13"
		input.setBounds(20,30,40,25);
		container.add(input);
		
		PaintCircle pc = new PaintCircle();
		pc.setBounds(0,0,800,600);
		container.add(pc);
		
		setVisible(true);
		setLocation(300,200);
		setSize(800,600);
		setContentPane(container);
		
		s1 = input.getText();
		
		System.out.println("В UserCircleJTextField-class s1=***"+s1+"***"); // Здесь s1 выводится как и ожидаемо со значением "13"

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	 
	 // =================== Как передать значение из s1 в s2, т.е. s2=s1 ??? ===================
			// String s2 = s1; 
	String paintCircle(String st1){
		 System.out.println("В paintCircle-function st1=***"+st1+"***");
		return st1;
	}
	
	public class PaintCircle extends Canvas {

		 String s2 = paintCircle("21"); // - ok! Здесь я специально заменяю "13" на "21", чтобы различить состояние переменных
               // s2 была искусственно введена (см. далее для чего)
     		   //String s2 = input.getText(); // <- А должно быть вот так. <- Как реализовать переход от s1 к s2 внутри этого (другого) класса?
	    	   // А здесь s1 стала неопределенной (как я понимаю, для нового метода она и сама стала новой, 
		       // как обратиться к той, которая была s1 = input.getText();
		       //String s2 = s1;
			
		public void paint(Graphics gr) {
			   int x,y,r;
			   x = 100;
			   y = 100;
               // здесь вместо s2 должно бы быть значение s1, которая в этом методе оказалась неопределенной
			   r = Integer.parseInt(s2); 
			         gr.setColor(Color.BLUE);
			         gr.fillOval(x,y,r,r);
			         gr.drawString("R="+s2, x+r, y+r);
			 		 System.out.println("В paint Graphics gr s2=***"+s2+"***");
		}
	}
	
// ========== main =============
	public static void main(String[] args) {
		JFrame urerWindow = new UserCircleJTextField("Окно для ввода-вывода input=JTextField и PaintCircle(x,y,R=input)");
		urerWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
}
DrDany вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в турбо паскале нарисовать круг.. Proskurina Паскаль, Turbo Pascal, PascalABC.NET 0 10.10.2012 13:44
нарисовать круг по центру экрана rUs_LAN Win Api 2 01.04.2010 21:27
КАК нарисовать круг Elmut Общие вопросы Delphi 5 27.05.2008 14:54
Нарисовать круг Brunette Помощь студентам 2 17.05.2008 00:01