Java 查看是否从父类单击了JButton

Java 查看是否从父类单击了JButton,java,swing,awt,jbutton,actionlistener,Java,Swing,Awt,Jbutton,Actionlistener,我正在进行一个项目,因为我正在管理主类中的多个窗口。从标题中可以看出,我对windows中的JButtons有一个问题。 主方法将等待按下一个特定按钮: public static void main(String[] args){ ButtonWindow bw = new ButtonWindow(); while(bw.buttonClicked() == false); System.out.println("ok cool"); } 同时,按钮的ActionL

我正在进行一个项目,因为我正在管理主类中的多个窗口。从标题中可以看出,我对windows中的JButtons有一个问题。 主方法将等待按下一个特定按钮:

public static void main(String[] args){
    ButtonWindow bw = new ButtonWindow();
    while(bw.buttonClicked() == false);
    System.out.println("ok cool");
}
同时,按钮的ActionListener将触发布尔值d(buttonClicked()方法返回的值)设置为true

public boolean d = false;
public ButtonWindow(){
    JPanel cp;
    JButton b;
    setContentPane(cp = new JPanel());
    cp.add(b = new JButton("Click me"));
    b.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            d = true;
        }
    });
    setSize(200, 200);
    setVisible(true);
}
public boolean buttonClicked() {
    return d;
}
现在,主方法似乎卡在while循环中。既然“d”已经更改了(我在按钮的ActionListener中使用了额外的“System.out.println”(“+d”);”),这怎么可能呢

提前谢谢


哦,还有,有没有更聪明的方法?我不认为连续调用此方法是最实际的做法。

您应该这样做:

public static void main(String[] args){
    ButtonWindow bw = new ButtonWindow();       
}

第二种方法:-


标记
变量设为静态,创建新的线程类,并使用线程循环,该线程会连续检查类
标记
变量值。您也可以将您的
标志
变量设置为实例变量,但在这种情况下,必须跨线程共享对象引用。

您应该这样做:

public static void main(String[] args){
    ButtonWindow bw = new ButtonWindow();       
}

第二种方法:-

标记
变量设为静态,创建新的线程类,并使用线程循环,该线程会连续检查类
标记
变量值。您还可以将
标志
变量设置为实例变量,但在这种情况下,必须跨线程共享对象引用

我在主类中管理多个窗口

应用程序应该只有一个JFrame和应用程序的主窗口

对于辅助窗口,通常使用
模态JDialog
。直到对话框关闭,执行才会继续

在许多情况下,您可以使用JOptionPane为您管理对话框。有关更多信息,请阅读上的Swing教程部分

我在主类中管理多个窗口

应用程序应该只有一个JFrame和应用程序的主窗口

对于辅助窗口,通常使用
模态JDialog
。直到对话框关闭,执行才会继续

在许多情况下,您可以使用JOptionPane为您管理对话框。有关更多信息,请阅读上的Swing教程部分