在我看来,到目前为止,JFrame中发生的一切都在JFrame中。 (可能应该进入JavaFX而不是Swing)
假设你有一个JFrame类(gui_frame),它利用JButtons和一个名为HandlerClass的嵌套类来实现ActionListener,如下所示:
public class gui_frame extends JFrame {
private JButton button1;
public gui_frame() {
super("Title");
setLayout(new FlowLayout());
button1 = new JButton("Hello");
add(button1);
HandlerClass handler = new HandlerClass();
button1.addActionListener(handler);
}
private class HandlerClass implements ActionListener{
public void actionPerformed(ActionEvent e){
//insert code here
}
}
}
然后你有了主要代码,它调用了这个gui_frame类。
public class main {
public static void main(String[] args){
//insert some unrelated code here
gui_frame gf = new gui_frame();
gf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gf.setSize(400,75);
gf.setVisible(true);
String button_name;
//insert some code that uses button_name
}
}
基本上,我试图将按钮的名称存储在JFrame类gui_frame中(在本例中为#34; Hello"),在点击之后,进入主类的String button_name, 在运行时。
这可能吗?我需要在gui_frame中插入actionPerformed方法,才能实现这一目标?
答案 0 :(得分:1)
有几种方法可以做到这一点:
将ActionListener实现为主类中的lambda(btw,应该大写,即" Main"),并将lambda传递给gui_frame类(同样,应该是& #34; GuiFrame"),并让GuiFrame类将监听器应用于按钮
为GuiFrame类创建一个接口,用于通知Main类按钮已被单击(以及按钮的名称)。让Main类实现该接口,然后将Main的实例传递给GuiFrame类。然后让GuiFrame的ActionListener调用Main类中的方法'通知界面。
将最后点击的按钮的名称存储在GuiFrame类中,并让Main类在需要时请求它(如果它不需要知道何时单击该按钮)。 / p>