如何让程序等待Java中的按钮按下

时间:2009-12-01 23:36:45

标签: java swing

现在,我不确定这是否可行,甚至是完成我正在尝试做的最好的方法,但基本上我正在使用一个非常简单的Swing GUI创建一个非常简单的模拟程序。

在每轮模拟之后,界面上的一些按钮被启用以供用户进行更改,然后用户可以按“继续”按钮再次开始模拟。模拟本身基本上是一个while循环,需要在继续之前等待用户操作。我的问题是如何让程序停止并等到用户按下“继续”按钮?如果不清楚我是否还能提供更多细节,请告诉我!

修改

我将在这里添加一些简化代码,所以这可能会更有意义。该程序分为两部分,模拟类和视图。因此,当模拟在其类中进行时,要按下的按钮位于视图类中。

模拟课程:

SimulationView view = new SimulationView(); // extends JFrame

while (!some_condition) {
    // code
    // need user action via button press here before continuing!
}

1 个答案:

答案 0 :(得分:5)

最有可能最好的方法是在方法中包含一轮模拟,然后从附加到所需按钮的动作侦听器执行。

编辑后: 有人需要首先控制模拟,因此您可以执行以下操作:

SimluationClass
{
    public int startSim()
    {
      ...
    }
}

class SimulationView
{

    SimulationClass sim = new SimulationClass();      

    private void init()
    {

      JButton button = new JButton("Start");
      button.addActionListener(new ActionListener() {
          void actionPerformed(...) 
          {
               sim.startSim()
          }
          });
    }
}

请记住,这会冻结你的gui,因为sim方法将从事件线程中执行。