繁体   English   中英

摆动使JButton无法聚焦

[英]Swing make a JButton not focussable

我想使Java摆动按钮“不可聚焦”。 该按钮应该根本不会获得焦点,但是应该能够接收鼠标单击。

我以为有以下选择,但这些选择不能完全解决我的问题,或者看起来不太优雅。 还有其他/更好/建议的选择吗?

  1. 当按钮获得焦点时,立即将焦点移至下一个组件(但是,如果按钮是UI上除标签之外的唯一组件,该怎么办?)
  2. 将另一个不可聚焦的组件实现为按钮(带有鼠标事件,边框等的标签)(对我来说,这看起来不太好)
  3. 创建一个覆盖键盘事件的匿名按钮实现,以便它不响应键盘事件(这不能解决焦点问题,但是对我来说还可以,因为问题的根源在于避免意外的键盘单击。我将仅在根本没有选项的情况下才执行此操作,但即使这样,也更喜欢选项2

所有Swing组件都有一个setFocusable方法来执行此操作:

JButton button = ...
button.setFocusable(false);

您是否尝试调用从java.awt.Component继承的setFocusable()方法?


资源:

您可以使用不喜欢您的按钮的accept方法来实现自己的FocusTraversalPolicy(或扩展例如ContainerOrderFocusTraversalPolicy)。

JFrame frame = new JFrame();
... /* create other components */
frame.setFocusTraversalPolicy(new ContainerOrderFocusTraversalPolicy() {
    public boolean accept(Component c) {
        return super.accept(c) && c!=iDontLikeYouButton;
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM