我正在开发一个 java swing 桌面应用程序。对话框表单有一个确定和取消按钮。当用户单击确定按钮时,应用程序会进行一些处理。如何在确定按钮上的事件完成执行之前阻止用户再次单击确定。另外,我不希望用户能够在 ok 完成执行之前按下取消按钮。任何帮助将不胜感激。
问问题
123 次
5 回答
5
启用管理是 UI 逻辑的一个组成部分。行动可以帮助您这样做:
Action action = new AbstractAction("myAction") {
public void actionPerformed(ActionEvent e) {
setEnabled(false);
doPerform();
setEnabled(true);
}
};
button.setAction(action);
注意:长时间运行的任务一定不能在EDT上执行,所以这只是短期的,防止第二次左右点击影响
编辑
刚刚注意到您使用 jsr296 标记了问题,那么它更容易:您可以将演示模型的方法标记为 @Action 并将其启用的属性绑定到模型的属性
@Action (enabledProperty == "idle")
public void processOk() {
setIdle(false);
doStuff;
setIdle(true);
}
此外,还有对 Tasks 的支持(有很多争议,但可用):基本上是 SwingWorker,具有细粒度的 beanified 生命周期支持
于 2011-11-15T09:12:14.033 回答
1
如果您想禁用所有控件,那么我建议使用GlassPane
. 有关更多信息,请参见此处:http: //docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html
于 2011-11-15T09:39:54.547 回答
0
最简单的方法是在单击按钮后立即禁用该按钮,并在执行的操作完成后重新启用它。
于 2011-11-15T08:38:41.027 回答
0
您可以禁用按钮,例如 yourButton.setEnabled(false); 在您的处理方法期间,并在完成后再次启用它。
于 2011-11-15T08:41:08.457 回答
0
看来您想要的是等待光标之类的东西。
于 2011-11-15T09:25:20.423 回答