Обращение к классу из другого класса
Как заставить объявленный элемент menu в Main.java быть объявленным и в Menu.java , дабы слушатель сработал и при нажатии кнопки открылось новое окно?
P.S Это нужно для разгрузки кода, ибо в длинном коде я быстро теряюсь. И да, это не весь код, а только его небольшой кусок.
Main.java
package com.company;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame Mainframe = new JFrame();
JPanel Mainpanel = new JPanel();
Mainframe.setSize(1050,700);
Mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mainframe.add(Mainpanel);
Mainframe.setTitle("None");
Mainpanel.setLayout(null);
JButton menu = new JButton("Меню");
menu.setBounds(600,580,434,81);
Mainpanel.add(menu);
Mainframe.setVisible(true);
}
}
Menu.java
package com.company;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Menu {
public Menu {
menu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFrame frame_menu = new JFrame();
frame_menu.setSize(250,250);
}
});
}
}
Ответы (1 шт):
Как я понимаю, вы хотите организовать нечто похожее на "разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента". Даже если это не так и ваша цель несколько иная, мой ответ должен вам помочь... Наверное.
Menu.java
package com.company;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Menu {
public JButton menuButton;
public Menu() {
}
public void addMenuActionListener() {
this.menuButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFrame frame_menu = new JFrame();
frame_menu.setSize(250,250);
}
});
}
}
Main.java
package com.company;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
Menu menu = new Menu();
JFrame Mainframe = new JFrame();
JPanel Mainpanel = new JPanel();
Mainframe.setSize(1050,700);
Mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mainframe.add(Mainpanel);
Mainframe.setTitle("None");
Mainpanel.setLayout(null);
JButton menuButton = new JButton("Меню");
menuButton.setBounds(600,580,434,81);
menu.menuButton = menuButton;
menu.addMenuActionListener();
Mainpanel.add(menuButton);
Mainframe.setVisible(true);
}
}
Теперь в классе Menu вы можете написать ещё несколько методов, которые будут взаимодействовать с кнопкой.