【问题标题】:How to have program wait for a button press in Java如何让程序等待Java中的按钮按下
【发布时间】:2019-11-20 21:19:29
【问题描述】:

现在,我不确定这是否可能,甚至是完成我想要做的事情的最佳方式,但基本上我正在使用非常简单的 Swing GUI 创建一个非常简单的模拟程序。

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

编辑:

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

模拟类:

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

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

【问题讨论】:

  • 程序应该只是在等待,所以当你点击某个东西时,事件被处理并完成,应用程序只是等待。它是事件驱动的。

标签: java swing


【解决方案1】:

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

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

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 方法将从事件线程中执行。

【讨论】:

  • 查看我上面的编辑,也许它会帮助我的情况更有意义。我明白你在说什么,但我不知道在我的程序被分成两个类时这将如何工作。
  • 是的,现在确实有道理。在我在 Simulation 中创建了一个视图实例之前,但是反过来使用它的方式要好得多。谢谢,我想我可以用它继续前进!
猜你喜欢
  • 2011-08-03
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多