我写了一个复杂的java程序,它有一个GUI。
在GUI中我有三个按钮,"播放","播放全部"和"重置",以及一些表格。
当我点击播放时,程序会执行其逻辑,然后将输出打印到我提到的表格中。这是正常的,正如预期的那样。经过一定数量的游戏"操作,我们将所有数据打印到表中,所以我们完成了,不能再点击它了。在这一点上,我禁用播放按钮。
当我点击全部播放时,我希望它好像我点击了#34;播放"直到它不再可能。所以我写了这段代码:
public synchronized void actionPerformed(ActionEvent event)
{
if(event.getSource() == playAllButton)
{
while(playButton.isEnabled())
{
playButton.doClick();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(event.getSource() == playButton)
{
Command command = listOfCommands.get(commandNumber++);
if(command.getCommandType() == "PF")
{
PFLabel.setText("PF Count:" + (++PFCount));
}
if(command.getCommandType() == "PR")
{
PRLabel.setText("PR Count:" + (++PRCount));
}
if(command.getCommandType() == "GP")
{
if(checkIfPF())
{
addPageToRam(((GPCommand)command).getPage());
}
else
{
if(checkIfPR(((GPCommand)command).getPage().getPageId()))
{
replacePage(((GPCommand)command).getPage(),getWithWhoToReplace(((GPCommand)command).getPage().getPageId()));
}
}
}
}
if(commandNumber == listOfCommands.size()) // we are done!
{
playButton.setEnabled(false);
}
}
正如我所提到的,当我点击播放按钮时,它会立即按预期打印结果。 但是当我单击全部播放时,它会运行很长时间而不显示任何输出,然后在最后打印最终结果。这不是我想要的。我想要的是它打印当前结果,稍等一下,我可以查看它,然后打印下一个结果。
即使我删除Thread.sleep它也很慢(并且仍然只打印最后一个结果)。
有没有办法让它跑得更快?更重要的是 - 在再次点击按钮之前如何让它等待?我想在再次点击之前查看当前结果一段时间。