好的,所以我在这里看到了很多像这样的问题,但没有一个提供的答案似乎适用于我的特殊情况。等待用户输入继续
我有一个游戏模拟程序分为两部分,我先写了实际的功能,然后用GUI来显示。我想,当我完成时,我只是来回执行呼叫,使两个人互相交谈。同时后端使用JOptionPane来获取用户输入。
我的问题是,现在,我想在GUI中显示的东西,我无法弄清楚如何暂停程序的运行要等待这样的事情发生。例如,我有我的原始版本:
private static void runAttackerTurn(Team off, Team def) {
int counter = 0;
while (counter < 4 && off.whoHasIt() != null) {
//Do some stuff
active = getActive(off, def, counter);
select = (String)JOptionPane.showInputDialog(null,
"Who Would " + active.getName() + " Like To Attack?" + "\n" +
off.whoHasIt().getName() + " has the ball",
"Turn " + turnCount + " - " + teamName + " Attacker Turn" ,
JOptionPane.INFORMATION_MESSAGE, null,
attackerOptions, attackerOptions[0]);
target = getTarget(off, def, select, counter);
attack((Forward)active, target);
//More stuff
counter++;
}
}
它工作得很好。但是当我有一个我想使用的GUI而不是JOptionPane时,它全部崩溃。 GUI具有包含JLabel
文本,对于列表选项JComboBox
和JButton
以确认JPanel
。我想要做的是让程序“暂停”,并等待用户点击该按钮,然后将所选项目放入select
并继续。
我不能将方法分成两部分,就像我最初尝试的那样,因为除了select
的结果之外,我还需要将其他内容发送到第二部分。
此外,它可能不会从上述显而易见的,但我做了该计划的过程中不同的方法,这大约二三十倍,所以我真的需要一个通用的解决方案,而不是一蹴而就的事情。
我认为这样做与多个线程可能工作,但我似乎无法得到正确的(主线程停止执行得太早 - 该按钮甚至没有显示出被点击),无论如何, d更喜欢简单的东西。
此外,如果这不是很清楚,我真正想要做的是模拟JOptionPane的模式属性,该JPanel嵌入到GUI中,并使该方法在继续之前等待用户输入。
任何想法?
我想的JOptionPane块UI,因为它的模态对话框,如果你需要你的布局是模式 - 试试这个http://stackoverflow.com/questions/1481405/how-to-make-a-jframe-modal-in-摆动爪哇。您也可以使用多线程模型 - 您只需创建新线程,调用join()并等待用户输入。 –