【问题标题】:Swing- focus problem摆动焦点问题
【发布时间】:2010-04-04 08:43:16
【问题描述】:

在我的应用程序中,我有一个带有工具栏的框架(工具栏包含一些操作)。 我希望工具栏仅在窗口聚焦时可见。 所以,我在窗口上注册了一个 windowFocusListener。 问题是- 当窗口没有聚焦并且我单击工具栏操作应该是的位置时 - 执行该操作。 发生这种情况是因为 WindowFocusGained 在释放鼠标按钮之前被调用,而当释放鼠标按钮时它调用 actionPerformed。

有没有人想办法解决这个问题? 有谁知道如何确定鼠标按钮现在是否被点击?

【问题讨论】:

    标签: swing focus action toolbar


    【解决方案1】:

    您可以在窗口中添加一个 MouseListener,并检查工具栏是否在 mousePressed 事件中可见。如果在按下鼠标时工具栏不可见,请在工具栏上设置一个标志(类似于“ignoreNextAction”)。

    在工具栏中,检查 actionPerformed 事件处理程序中的该标志。

    在窗口的 mouseReleased 事件中重置工具栏标志,以便下次点击正常工作。

    这是假设窗口上的 mouseReleased 事件发生在工具栏上的 actionPerformed 之后(对此不确定)。最坏的情况是,您可以使用一个计时器,它会在鼠标事件后 50 毫秒重置标志。

    【讨论】:

      【解决方案2】:

      您现在只能在窗口失去焦点时隐藏工具栏,还可以使用setEnabled(false) 禁用所有按钮,然后重新启用焦点增益。或者,将 setEnabled(..) 与按钮的可见性(而不是窗口焦点)同步。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-15
        • 2011-03-07
        • 2016-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多