我有一个JButton,出于各种原因,我希望它像一个按钮一样工作,但看起来像一个JLabel。实际上,在内部它并不需要是一个JLabel,我只是不想让凸起的按钮边框出现。
有没有一种简单的方法可以关闭JButton的"按钮外观",但保留所有按钮功能?
我可以构建某种组合子类超级按钮,将显示委托给jlabel,但我真的希望有像button.lookLikeAButton(false)
这样的东西。
setFocusPainted(false);
setMargin(new Insets(0, 0, 0, 0));
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
你可能需要排除setFocusPainted(false)
如果你希望它实际上绘制焦点(例如在 Windows 好看的虚线边框)。setBorder(new EmptyBorder(0,0,0,0)); setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
- hepcat72将背景颜色设置为透明,并将边框设置为空边框实例。
例如:
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上进行操作处理。
JLabel
并处理onClickEvents
吗? - Nicolas C