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

时间:2010-06-11 18:36:02

标签: java swing jbutton jlabel

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

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

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

5 个答案:

答案 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上进行操作处理吗?