好吧所以我的问题是,当我的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);
}
}
答案 0 :(得分:2)
框架包含一个内容窗格,您可以在其中添加所有组件。因此,您需要设置内容窗格的背景:
frame.getContentPane().setBackground(...);
请参阅Using Top Level Containers上的Swing教程中的部分,以获取更多信息和图表,其中显示了与框架的内容窗格关系。