如何设置JButton的默认背景颜色?

时间:2016-11-25 14:42:53

标签: java swing jbutton

我无法将JButton的默认颜色设置为黄色?

同样单击按钮后,它应变为红色,如果已经是红色,则可以单击该按钮以更改为黄色。关于我应该做什么的任何想法?

private void goldSeat1ActionPerformed(java.awt.event.ActionEvent evt){                                          

    // TODO add your handling code here:

    goldSeat1.setBackground(Color.YELLOW);

}                                         

private void goldSeat1MouseClicked(java.awt.event.MouseEvent evt) {                                       

    // TODO add your handling code here:

    goldSeat1.setBackground(Color.red);

}

1 个答案:

答案 0 :(得分:1)

enter image description here

要设置JButton的背景颜色,您可以使用setBackground(Color)

如果要切换按钮,则必须在按钮上添加ActionListener,以便在单击按钮时更改。您 必须使用MouseListener

我在这里做的是设置一个布尔值,每次单击按钮时都会自动翻转。 (TRUE变为FALSE,FALSE在单击时变为TRUE)。 XOR已被用来实现这一目标。

由于您需要比原始JButton更多的属性,您可以通过从JButton扩展属性来自定义您自己的属性。

这样做可以让您享受JComponents的好处,同时允许您添加自己的功能。

我自定义按钮的示例:

class ToggleButton extends JButton{

    private Color onColor;
    private Color offColor;
    private boolean isOff;

    public ToggleButton(String text){
        super(text);
        init();
        updateButtonColor();
    }

    public void toggle(){
        isOff ^= true;
        updateButtonColor();            
    }

    private void init(){
        onColor = Color.YELLOW;
        offColor = Color.RED;
        isOff = true;
        setFont(new Font("Arial", Font.PLAIN, 40));     
    }

    private void updateButtonColor(){
        if(isOff){
            setBackground(offColor);
            setText("OFF");
        }           
        else{
            setBackground(onColor); 
            setText("ON");
        }           
    }   
}

包含自定义按钮的JPanel示例:

class DrawingSpace extends JPanel{

    private ToggleButton btn;

    public DrawingSpace(){
        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(200, 200));
        btn = new ToggleButton("Toggle Button");
        setComponents();
    }

    private void setComponents(){
        add(btn);
        btn.addActionListener(new ActionListener(){             
            @Override
            public void actionPerformed(ActionEvent e){
                btn.toggle();  //change button ON/OFF status every time it is clicked
            }
        });
    }   
}

驱动代码的跑步者类:

class ButtonToggleRunner{
    public static void main(String[] args){

        SwingUtilities.invokeLater(new Runnable(){         
            @Override
            public void run(){      
                JFrame f = new JFrame("Toggle Colors");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(new DrawingSpace());
                f.pack();   
                f.setLocationRelativeTo(null);
                f.setVisible(true);             
            }
        });             
    }
}