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

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

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

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

您需要执行以下操作:

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

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

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

将背景颜色设置为透明,将边框设置为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上进行动作处理吗?