如何更改我的JFrame的背景颜色(我是大学一年级学生)

时间:2015-11-20 05:19:24

标签: java swing user-interface jframe

好吧所以我的问题是,当我的if语句检查我的布尔值给我“强”,“公平”等时,我应该如何更改JFrame背景颜色.frame.setBackground(Color.green)将是什么我需要,但我不认为它要我访问该对象。 (PS我知道代码有点草率)。

谢谢你们。

public class PasswordJFrame extends JFrame实现了ActionListener {

private JLabel title;
private JTextField input;
private JButton rate;
private JLabel rating;
private JButton reset;
private String password;
private boolean upperlower = false;
private boolean symbol = false;
private boolean number = false;


public PasswordJFrame(){

    Container pane = this.getContentPane();
    pane.setLayout(new FlowLayout());
    title = new JLabel("Enter Your Password:");
    input = new JTextField(15);
    rate = new JButton("Rate my password");
    rating = new JLabel("");
    reset = new JButton("Reset");

    pane.add(title);
    pane.add(input);
    pane.add(rate);
    pane.add(rating);
    pane.add(reset);
    rate.addActionListener(this);
    reset.addActionListener(this);

}

public void actionPerformed(ActionEvent e) {

    Object source = e.getSource();
    password = input.getText();

    if (source == rate){

        for(int i = 0; i<password.length() - 1; i++){

            switch(input.getText().charAt(i)){

                case '@':
                symbol = true;
                break;
                case '$':
                symbol = true;
                break;
                case '*':
                symbol = true;
                break;
                case '+':
                symbol = true;
                break;
                case '%':
                symbol = true;
                break;
                case '&':
                symbol = true;
                break;
                case '0':
                number = true;
                break;
                case '1':
                number = true;
                break;
                case '2':
                number = true;
                break;
                case '3':
                number = true;
                break;
                case '4':
                number = true;
                break;
                case '5':
                number = true;
                break;
                case '6':
                number = true;
                break;
                case '7':
                number = true;
                break;
                case '8':
                number = true;
                break;
                case '9':
                number = true;
                break;  
            }

            if(!password.equals(password.toLowerCase()) && !password.equals(password.toUpperCase())){       
                upperlower = true;
            }
        }

        if(upperlower && symbol && number){
            rating.setText("Strong");
            frame.setBackground(Color.green);
        }
        else if (upperlower && number){
            rating.setText("Fair");
            frame.setBackground(Color.yellow);
        }
        else if (upperlower){
            rating.setText("Weak");
            frame.setBackground(Color.red);
        }
        else{
            rating.setText("Awful");
            frame.setBackground(Color.black);
        }

    }
}

public static void main(String[] args){

    PasswordJFrame frame = new PasswordJFrame();
    frame.setSize(300,300);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


}

}

1 个答案:

答案 0 :(得分:2)

框架包含一个内容窗格,您可以在其中添加所有组件。因此,您需要设置内容窗格的背景:

frame.getContentPane().setBackground(...);

请参阅Using Top Level Containers上的Swing教程中的部分,以获取更多信息和图表,其中显示了与框架的内容窗格关系。