现在,我不确定这是否可行,甚至是完成我正在尝试做的最好的方法,但基本上我正在使用一个非常简单的Swing GUI创建一个非常简单的模拟程序。
在每轮模拟之后,界面上的一些按钮被启用以供用户进行更改,然后用户可以按“继续”按钮再次开始模拟。模拟本身基本上是一个while循环,需要在继续之前等待用户操作。我的问题是如何让程序停止并等到用户按下“继续”按钮?如果不清楚我是否还能提供更多细节,请告诉我!
修改
我将在这里添加一些简化代码,所以这可能会更有意义。该程序分为两部分,模拟类和视图。因此,当模拟在其类中进行时,要按下的按钮位于视图类中。
模拟课程:
SimulationView view = new SimulationView(); // extends JFrame
while (!some_condition) {
// code
// need user action via button press here before continuing!
}
答案 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方法将从事件线程中执行。