我有一个JButton,出于各种原因,我想像按钮一样,但看起来像一个JLabel。它实际上并不一定是引擎盖下的JLabel,我只是不希望凸起的按钮边缘显示出来。
是否有一种简单的方法可以关闭JButton的“按钮外观”,但保留所有按钮功能?
我可以构建一些组合的子类超级按钮,它被委托给jlabel用于显示目的,但我真的希望有一些类似button.lookLikeAButton(false)
的内容。
答案 0 :(得分:26)
您需要执行以下操作:
setFocusPainted(false);
setMargin(new Insets(0, 0, 0, 0));
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
如果您希望实际绘制焦点(例如Windows外观上的虚线边框),则可能需要排除setFocusPainted(false)
。
在我想要“仅图标”按钮的情况下,我使用了上述代码。
答案 1 :(得分:2)
将背景颜色设置为透明,将边框设置为EmptyBorder实例。
E.g。
JButton button = new JButton();
button.setBackground(null);
button.setOpaque(false);
button.setBorder(new EmptyBorder());
当您单击按钮时,文本仍然会上下移动,通过将鼠标移出按钮区域,单击,按住和“撤防”按钮仍然可以“布防”。
如果您不想要这种行为,那么您可能不想使用按钮,而是使用真实标签。
答案 2 :(得分:1)
button.setBorderPainted( false );
button.setContentAreaFilled( false ); // ?
答案 3 :(得分:0)
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
这三条线就可以了。
答案 4 :(得分:-1)
实际上,将鼠标监听器添加到JLabel实际上会更容易吗?您可以调整mousePressed和mouseReleased上的颜色,并在mouseClicked上进行操作处理吗?