绘制一个 JButton 使其看起来像一个 JLabel(或者至少没有按钮边缘?)
题
我有一个 JButton,出于各种原因,我希望它表现得像一个按钮,但看起来像一个 JLabel。它实际上不必是引擎盖下的 JLabel,我只是不想显示凸起的按钮边缘。
有没有一种简单的方法可以关闭 JButton 的“按钮外观”但保留所有按钮功能?
我可以构建某种组合子类超级按钮,将其委托给 jlabel 以用于显示目的,但我真的希望有类似的东西 button.lookLikeAButton(false)
.
解决方案
您将需要执行以下操作:
setFocusPainted(false);
setMargin(new Insets(0, 0, 0, 0));
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
您可能想要排除 setFocusPainted(false)
如果你想让它真正绘制焦点(例如Windows 外观上的虚线边框)。
当我想要一个“仅图标”按钮时,我使用了上面的代码。
其他提示
将背景颜色设置为透明,并将边框设置为 EmptyBorder 实例。
例如。
JButton button = new JButton();
button.setBackground(null);
button.setOpaque(false);
button.setBorder(new EmptyBorder());
当您单击按钮时,文本仍然会上下移动,并且仍然可以通过单击、按住来“布防”按钮,以及通过将鼠标移出按钮区域来“布防”按钮。
如果您不想要这种行为,那么您可能不想使用按钮,而是使用真正的标签。
button.setBorderPainted( false );
button.setContentAreaFilled( false ); // ?
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
这三行就可以了。
向 JLabel 添加鼠标侦听器实际上可能更容易吗?您可以调整 mousePressed 和 mouseReleased 上的颜色,并在 mouseClicked 上进行操作处理吗?
不隶属于 StackOverflow