在我的应用程序中,我有一个框架,带有工具栏(工具栏包含一些操作)。我希望工具栏仅在窗口被聚焦时可见。所以,我在窗口上注册了一个windowFocusListener。问题是-当窗口没有被聚焦时,当我点击工具栏操作应该在的地方-该操作被执行。这是因为在松开鼠标按键之前调用WindowFocusGained,而在松开鼠标按键时调用actionPerformed。
有没有人有办法解决这个问题?有谁知道如何确定现在是否点击了鼠标按钮?
发布于 2010-04-04 17:39:27
您可以向窗口中添加一个MouseListener,并检查工具栏在mousePressed事件中是否可见。如果在按下鼠标时工具栏不可见,请在工具栏上设置一个标志(类似于"ignoreNextAction")。
在工具栏中,选中actionPerformed事件处理程序中的该标志。
重置窗口上mouseReleased事件中的工具栏标志,以便下一次单击可以正常工作。
这假设窗口上的mouseReleased事件发生在工具栏上的actionPerformed之后(不确定这一点)。在最坏的情况下,你可以使用一个定时器,在鼠标事件后50毫秒重置旗标。
发布于 2010-04-07 21:50:02
现在,您可以只在窗口失去焦点时隐藏工具栏,但也可以使用setEnabled(false)禁用所有按钮,然后在焦点获得时重新启用。或者,同步setEnabled(..)按钮的可见性(而不是窗口焦点)。
https://stackoverflow.com/questions/2573934
复制相似问题