我想创建一个菜单窗口,它将成为gui类的一部分。 gui类由Manager类控制。问题是,当我按下菜单中的按钮时,我希望Manager类知道按下了一个按钮。我尝试使用标志来指示是否按下按钮,但由于某种原因它不起作用。这是我的代码: gui班:
public class Gui extends JFrame implements ActionListener {
private JFrame jframe;
private JPanel jpanel;
private JButton jbutton;
public boolean jbuttonFlag = false;
Gui(){
jframe = new JFrame("Test Frame");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jpanel = new JPanel();
jpanel.setBackground(Color.BLUE);
jbutton = new JButton("Click Me");
jbutton.addActionListener(this);
jpanel.add(jbutton);
jframe.add(jpanel);
jframe.pack();
jframe.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Click Me"))
jbuttonFlag = true;
}
}
和Manager类:
public class Manager{
Gui g;
Manager(){
g = new Gui();
}
public void Start(){
while( !g.jbuttonFlag );
System.out.println("Button Pressed");
}
}
当我单击按钮时,我希望它在控制台中写入它被单击,但是它不会发生。为什么?谢谢!
答案 0 :(得分:0)
您应该同步它们,因为它们是单独的线程。这对我有用:
经理:
public void Start(){
synchronized(g){try{g.wait();}catch(Exception e){}}
System.out.println("Button Pressed");
}
在桂:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Click Me")){
synchronized(this){
this.notify();
}
}
}