powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с несколькими классами
3 сообщений из 3, страница 1 из 1
Работа с несколькими классами
    #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
Работа с несколькими классами
    #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
Работа с несколькими классами
    #39373185
NewReborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, спасибо большое!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с несколькими классами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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