我在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//
它可以让边框像这张图片一样消失:
但是当我点击鼠标(未移动)到按钮时,按钮周围有一个“点”边框,如下所示:
那么,我怎么能设置按钮,这样当我不在按钮区域移动鼠标时,它仍然像第一张图像一样设置,但是当我移动鼠标时,按钮周围有一个方形(带有浅蓝色背景)?
答案 0 :(得分:100)
那不是边界。这是焦点。您可以使用以下方法删除它:
jButton1.setFocusPainted(false);
答案 1 :(得分:6)
这可能是旧线程,但我解决了我的问题
button.setFocusable(false)
希望对那些仍在寻找答案的人有所帮助。 欢呼声。
答案 2 :(得分:2)
挖掘后,我想出了一个更好的解决方案。这也是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)));
答案 3 :(得分:1)
我不认为通常JButton
这样做是个好主意。如果没有,如果您计划在不同平台上显示此按钮,它将在不同平台(Mac和Linux)中显示不相似。
出于所有实际目的,button.setFocusPainted(false);
应该照顾您当前的要求。
考虑使用带有按钮的扩展JLabel
行为(使用动作侦听器)以避免行为差异。
答案 4 :(得分:0)
看看这是否可以帮助你Remove border
或者这个
Border emptyBorder = BorderFactory.createEmptyBorder();
yourButton.setBorder(emptyBorder);