禁用JButton焦点边框

我在Java中遇到了JButton的问题。 基本上,我想禁用按钮的边框(按钮添加到JDesktopPane)。

这是我的代码:

JButton j = new JButton("BUTTON"); j.setIcon(icon1); //icon1 : icon// j.setFocusable(true); j.setContentAreaFilled(false); j.setBounds(90, 20, 130, 30); dtp.add(j); //dtp : JDesktopPane// 

它可以让边框像这张图片一样消失:

在此处输入图像描述

但是当我点击鼠标(未移动)到按钮时,按钮周围有一个“点”边框,如下所示:

在此处输入图像描述

那么,我怎么能设置按钮,这样当我不在按钮区域周围移动鼠标时,它仍然像第一张图像一样设置,但是当我移动鼠标时,按钮周围有一个方形(带有一个灯 – 蓝色背景)?

那不是边界。 这是焦点。 您可以使用以下方法删除它

 jButton1.setFocusPainted(false); 

这可能是旧线程,但我用button.setFocusable(false)解决了我的问题button.setFocusable(false)

希望对那些仍在寻找答案的人有所帮助。 干杯。

在挖掘之后,我想出了一个更好的解决方案。 这也是Windows上GTK应用程序中常见的UI错误,其中一个是GIMP。 它让我非常恼火所以我想找到一个更好的修复全局修复,而不是手动设置每个控件。

解决方法将焦点的颜色设置为透明不应发生的所有常见控件。 我在Visual Studio中使用Windows窗体进行了大量测试。 工具栏按钮和ToggleButtons即使在聚焦时也不应该有虚线边框。 工具栏应该是setFocusable(false); 默认情况下,因为它们在Windows中。 每个其他控件都应该具有Swing中的虚线边框,但仅在焦点循环时才有。

  // 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))); 

我不认为用通常的JButton这样做是个好主意。 如果没有,如果您计划在不同平台上显示此按钮,它将在不同平台(Mac和Linux)中显示不相似。 用于所有实际目的button.setFocusPainted(false); 应该照顾你目前的要求。

考虑使用具有类似行为的按钮的扩展JLabel (使用动作侦听器)以避免行为差异。

看看这是否可以帮助你删除边框

或许这个

 Border emptyBorder = BorderFactory.createEmptyBorder(); yourButton.setBorder(emptyBorder);