我使用以下属性设置JButton: - borderPainted为false - contentAreaFilled为false - border to null - 不透明
单击按钮后,背景变为黑色或淡化为黑色, 但为什么,......任何建议!? (THX)
答案 0 :(得分:4)
如果您想创建透明按钮,只需要setContentAreaFilled(false)
,不要致电setOpaque
,请参阅javadoc(请注意最后一个javadoc中的行表示因外观而异。):
设置contentAreaFilled属性。如果为true,则按钮将绘制内容区域。 如果您希望有一个透明按钮,例如仅限图标按钮,那么您应该将其设置为false。 不要调用setOpaque(false)。 contentAreaFilled属性的默认值为true。
此函数可能导致组件的opaque属性发生变化。
调用此函数的确切行为因逐个组件和L& F-by-L& F而异。
如果您“只想要”文字(并且没有边框),则可以拨打setBorder(null)
。
...没有边框,没有背景(没有“按下”背景)。对unity / ubuntu的默认外观进行测试,例如MetalLookAndFeel
。
public static void main(String... args) {
JButton button = new JButton(new AbstractAction("Button") {
@Override
public void actionPerformed(ActionEvent arg0) {
// Printout to verify that the button was actually pressed
// since no visual output is shown... :)
System.out.println("Clicked");
}
});
button.setContentAreaFilled(false);
button.setBorder(null);
JFrame frame = new JFrame("Test");
frame.setLayout(new FlowLayout());
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}