停止接收Java中的所有ActionEvents / Stop Listening一段时间?

时间:2011-11-07 15:01:43

标签: java swing

我有一个简单的程序,利用Java Swing Timer显示400毫秒的图像,在这段时间内我只想停止所有ActionListeners或停止使用ActionEvents。我有40多个按钮,想要一个简单的方法来做到这一点。

有没有在Java中这样做?

4 个答案:

答案 0 :(得分:2)

您能确定您处于“图像显示”状态吗?图像上升,您将状态设置为“图像显示”或其他。浏览你的小部件,并确定在图像启动时哪些应该是死的。将它们变成此状态值的观察者。当状态改变时,它们会根据需要启用或禁用。图像代码不会直接对任何窗口小部件执行任何操作。它只是声明状态现在是“图像显示”。由观察员决定如何处理这些信息。

或使用GlassPane。这也有效。当然,GlassPane会关闭所有内容。如果你需要更具选择性,你需要一种更精细的方法。

答案 1 :(得分:1)

您可以使用临时GlassPane实例通过向其注册空侦听器来使用所有事件。

答案 2 :(得分:1)

使用未修饰的模态JDialog显示图像。在使对话框可见之前,您将启动一个Timer。当Timer在400毫秒内触发时,您关闭对话框。

答案 3 :(得分:1)

我遇到了类似的问题,并且通常发现它的设计问题让我处于这种状况。既然如此,我仍然需要找到它。为了解决这个问题,我保留了一个我想要禁用的元素列表(停止监听),并在计时器的开头和结尾迭代它们。对于按钮,它应该简单:

for(Component c : listOfToggledComponents){
     c.setEnabled(shouldItBeEnabled);
}

对于按钮,这将使按钮变灰。类似的事情发生在其他摆动组件上。