Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с несколькими классами / 3 сообщений из 3, страница 1 из 1
22.12.2016, 17:07
    #39373160
NewReborn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с несколькими классами
В джава свинге у меня объявлено два фрейма(два окна). На одном из них есть боттон, при нажатии на эту кнопку, данный фрейм у меня закрывается, а второй открывается. Это у меня реализовано в одном классе. Подскажите как сделать два класса, что бы в одном классе были методы и действия для одного фрейма, а во втором для другого и при этом два фрейма между собой могли взаимодействовать.
Вот пример того, как я сделал это в одном классе.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
public class PTN2 {

	private JFrame frame;
	private JFrame frame2;

	 public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					PTN2 window = new PTN2();
					window.frame.setVisible(false);
					window.frame2.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}


	public PTN2() {
		initialize();
	}

	private void initialize() {
	
//---------------------Второе окно-------------------------//
		
		frame = new JFrame();
		frame.setBounds(450, 100, 295, 394);
		 frame.setTitle("Пятнашки");
                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);

//---------------------Первое окно-------------------------//  Это окно появится при запуске

	        frame2 = new JFrame();
		frame2.setBounds(450, 100, 400, 379);
		 frame2.setTitle("Вход");

		 frame2.getContentPane().setBackground(Color.BLACK);
		 
		 frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame2.getContentPane().setLayout(null);
	

  //         NEW GAME         //	Вот эта кнопка открывает новый фрейм, закрывая данный
	
		  JButton start2 = new JButton("START GAME");
		
		  start2.setForeground(Color.BLUE);
		  start2.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent arg0){
frame2.setVisible(false);
frame.setVisible(true);
}
				}
	);
		  start2.setFont(new Font("Tahoma",Font.BOLD,20));
		  start2.setBounds(40,152,300,60);
				frame2.getContentPane().add(start2);
...
Рейтинг: 0 / 0
22.12.2016, 17:18
    #39373171
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с несколькими классами
Трясет меня уже этого вопроса. Каждый месяц задают. Из теории вам нужно прочитать про отделение модели (Пятнашки) от представления (JFrame и все остальные классы Swing)

Помимо этого я вам рекомендую выкинуть Swing и изучать JavaFX.

Но для Swing вам нужно такое. BarleyBreak это ваша модель предметной области aka Domain Model aka бизнес-модель.
Она общая для двух окон. Окна подписываются на события в модели. Когда в модели что-то меняется, она выкидывает события всем слушателям. Окна ловят эти события и меняют отображения на GUI соответственно актуальному состоянию модели.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class Main {
    public static void main(String[] args) {
             BarleyBreak bb = new BarleyBreak();
             LoginFrame lf = new LoginFrame(bb);
             lf.setVisible(true)
             FieldFrame ff = new FieldFrame(bb);
    }
}

public class FieldFrame extends JFrame implement PropertyChangeListener{
    public FieldFrame(BarleyBreak bb) {
         bb.addPropertyChangeListener(this);
    }
}

public class LoginFrame extends JFrame {
      //Аналогично
}

public class BarleyBreak extends PropertyChangeSupport{
        void setSomething(Something s){
           this.smth = s;
           firePropertyChange(...);
        }
}
...
Рейтинг: 0 / 0
22.12.2016, 17:30
    #39373185
NewReborn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с несколькими классами
Blazkowicz, спасибо большое!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с несколькими классами / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]