点击后按钮背景变黑

时间:2012-07-02 22:28:05

标签: java swing background jbutton

我使用以下属性设置JButton:   - borderPainted为false   - contentAreaFilled为false   - border to null   - 不透明

单击按钮后,背景变为黑色或淡化为黑色, 但为什么,......任何建议!? (THX)

1 个答案:

答案 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);
}