我正在开发一个java swing桌面应用程序。对话框表单有一个确定和取消按钮。当用户单击“确定”按钮时,应用程序会进行某些处理。如何在ok按钮上的事件执行完之前阻止用户再次单击ok。此外,我不希望用户能够按下取消按钮,直到确定完成执行。任何帮助将受到高度赞赏。
答案 0 :(得分:5)
启用管理是UI逻辑的一个组成部分。行动可以帮助您这样做:
Action action = new AbstractAction("myAction") {
public void actionPerformed(ActionEvent e) {
setEnabled(false);
doPerform();
setEnabled(true);
}
};
button.setAction(action);
注意:长时间运行的任务不得在EDT上执行,所以这只是为了短期,以防止第二次左右点击产生影响
修改强>
注意到您使用jsr296标记了问题,然后更容易:您可以将表示模型的方法标记为@Action并将其enabled属性绑定到模型的属性
@Action (enabledProperty == "idle")
public void processOk() {
setIdle(false);
doStuff;
setIdle(true);
}
另外,对于任务有支持(备受争议,但可用):基本上是SwingWorker,具有细粒度的bean化生命周期支持
答案 1 :(得分:1)
如果要禁用所有控件,我建议使用GlassPane
。有关详细信息,请参阅此处:http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html
答案 2 :(得分:0)
最简单的方法是在点击按钮后立即禁用该按钮,并在完成所执行的操作后重新启用它。
答案 3 :(得分:0)
您可以像yourButton.setEnabled(false)一样禁用按钮;在处理方法中,并在完成后再次启用它。
答案 4 :(得分:0)
似乎你想要的东西就像waiting cursor。