绘制一个JButton看起来像一个JLabel(或者至少没有按钮边缘?
我有一个JButton,出于各种原因,我想像一个按钮一样,但看起来像一个JLabel。它实际上不必是引擎盖下的JLabel,我只是不希望凸起的按钮边缘出现。
有没有一种简单的方法可以关闭JButtons的“按钮外观”,但保留所有按钮功能?
我可以构建某种组合的子类超按钮,这些子按钮委托给jlabel用于显示目的,但我真的希望有一些类似于.button.lookLikeAButton(false)
我有一个JButton,出于各种原因,我想像一个按钮一样,但看起来像一个JLabel。它实际上不必是引擎盖下的JLabel,我只是不希望凸起的按钮边缘出现。
有没有一种简单的方法可以关闭JButtons的“按钮外观”,但保留所有按钮功能?
我可以构建某种组合的子类超按钮,这些子按钮委托给jlabel用于显示目的,但我真的希望有一些类似于.button.lookLikeAButton(false)
您将需要执行以下操作:
setFocusPainted(false);
setMargin(new Insets(0, 0, 0, 0));
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
如果您希望它实际绘制焦点(例如,Windows 外观和感觉上的虚线边框),则可能需要排除。setFocusPainted(false)
我已经使用了上面的代码,在我想要一个“仅图标”按钮的情况下。
将背景色设置为透明,将边框设置为 EmptyBorder 实例。
例如:
JButton button = new JButton();
button.setBackground(null);
button.setOpaque(false);
button.setBorder(new EmptyBorder());
单击按钮时,文本仍将上下移动,并且仍可以通过单击、按住按钮来“武装”按钮,也可以通过将鼠标移出按钮区域来“解除武装”。
如果您不希望出现这种行为,那么您可能不想使用按钮,而是使用真正的标签。