绘制一个JButton看起来像一个JLabel(或者至少没有按钮边缘?

2022-09-02 09:35:23

我有一个JButton,出于各种原因,我想像一个按钮一样,但看起来像一个JLabel。它实际上不必是引擎盖下的JLabel,我只是不希望凸起的按钮边缘出现。

有没有一种简单的方法可以关闭JButtons的“按钮外观”,但保留所有按钮功能?

我可以构建某种组合的子类超按钮,这些子按钮委托给jlabel用于显示目的,但我真的希望有一些类似于.button.lookLikeAButton(false)


答案 1

您将需要执行以下操作:

        setFocusPainted(false);
        setMargin(new Insets(0, 0, 0, 0));
        setContentAreaFilled(false);
        setBorderPainted(false);
        setOpaque(false);

如果您希望它实际绘制焦点(例如,Windows 外观和感觉上的虚线边框),则可能需要排除。setFocusPainted(false)

我已经使用了上面的代码,在我想要一个“仅图标”按钮的情况下。


答案 2

将背景色设置为透明,将边框设置为 EmptyBorder 实例。

例如:

   JButton button = new JButton();
   button.setBackground(null);
   button.setOpaque(false);
   button.setBorder(new EmptyBorder());

单击按钮时,文本仍将上下移动,并且仍可以通过单击、按住按钮来“武装”按钮,也可以通过将鼠标移出按钮区域来“解除武装”。

如果您不希望出现这种行为,那么您可能不想使用按钮,而是使用真正的标签。


推荐