绘制一个看起来像JLabel的JButton(或者至少没有按钮边缘?)
我有一个JButton,由于各种原因我想表现得像一个按钮,但看起来像一个JLabel。 它实际上并不一定是引擎盖下的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上进行动作处理吗?