我有一个简单的程序,利用Java Swing Timer显示400毫秒的图像,在这段时间内我只想停止所有ActionListeners或停止使用ActionEvents。我有40多个按钮,想要一个简单的方法来做到这一点。
有没有在Java中这样做?
答案 0 :(得分:2)
您能确定您处于“图像显示”状态吗?图像上升,您将状态设置为“图像显示”或其他。浏览你的小部件,并确定在图像启动时哪些应该是死的。将它们变成此状态值的观察者。当状态改变时,它们会根据需要启用或禁用。图像代码不会直接对任何窗口小部件执行任何操作。它只是声明状态现在是“图像显示”。由观察员决定如何处理这些信息。
或使用GlassPane。这也有效。当然,GlassPane会关闭所有内容。如果你需要更具选择性,你需要一种更精细的方法。
答案 1 :(得分:1)
您可以使用临时GlassPane
实例通过向其注册空侦听器来使用所有事件。
答案 2 :(得分:1)
使用未修饰的模态JDialog显示图像。在使对话框可见之前,您将启动一个Timer。当Timer在400毫秒内触发时,您关闭对话框。
答案 3 :(得分:1)
我遇到了类似的问题,并且通常发现它的设计问题让我处于这种状况。既然如此,我仍然需要找到它。为了解决这个问题,我保留了一个我想要禁用的元素列表(停止监听),并在计时器的开头和结尾迭代它们。对于按钮,它应该简单:
for(Component c : listOfToggledComponents){
c.setEnabled(shouldItBeEnabled);
}
对于按钮,这将使按钮变灰。类似的事情发生在其他摆动组件上。