Swing:如何去除对话框中按钮的焦点边框

5
我想知道如何从对话框中的按钮上移除灰色边框。对于简单的JButton,我找到了一个解决方案 - 只需使用button.setFocusPainted(false);即可。但是是否有一种简单的方法来对所有对话框中的所有按钮执行相同的操作呢?我尝试查看UIManager属性,但似乎没有适当的参数。谢谢!

“如何从对话框中的按钮上移除虚线灰色边框?” 你为什么要制作另一个不可用的GUI?那些虚线是用来显示焦点的。让它们保持原样吧。 - Andrew Thompson
1
@Andrew Thompson 嗯,你说得对 - 移除焦点边框会影响可用性,但我可以提供两个论点。1)我在我的应用程序中使用只有一个按钮的消息对话框(我帖子中的第一张图片来自Oracle的网站),所以我认为在这种情况下焦点边框是无用的。2)我觉得这个边框真的不合适,也许只在整个按钮周围绘制它会更好,而不是在按钮文本周围绘制它。 - Kirill Smirnov
3个回答

9
  • JButtons API 中,您可以使用 JButton.setFocusable() 和 与 JButton.setBorderPainted(false); 配合使用。

  • UIManager 中,必须覆盖键(适用于整个JVM实例)。

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
  • 我建议将Color(代码中的第四个参数)更改为更适合的透明度,否则您将无法看到任何`JButtons`的焦点。

这个运行得非常好!谢谢你一百万次!! - Makaveli84

6

关于什么?

JButton.setFocusPainted(false)

简单而有效 - Kartik Chugh

1

以下是全局修复方法,这样您就不必为每个控件手动执行。从我的其他帖子中获取:禁用JButton焦点边框

        // Removes the dotted border around controls which is not consistent with Windows
        UIManager.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("ToggleButton.focus", new ColorUIResource(new Color(0, 0, 0, 0)));

        // ways to remove it from other controls...
        UIManager.put("CheckBox.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("TabbedPane.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("RadioButton.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("Slider.focus", new ColorUIResource(new Color(0, 0, 0, 0)));

        // figure out combobox
        UIManager.put("ComboBox.focus", new ColorUIResource(new Color(0, 0, 0, 0)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接