2015-11-20 16 views
0

好的,所以我的問題在於如何改變JFrame背景顏色,當我的if語句檢查我的布爾值給我或者「強「,」公平「等frame.setBackground(Color.green)將是我所需要的,但我不認爲它想要我訪問該對象。 (PS我知道代碼有點草率)。如何更改我的JFrame的背景顏色(我是一年級大學生)

謝謝你們。

公共類PasswordJFrame擴展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); 


} 

}

回答

2

該框架包含在其中添加所有組件的內容窗格。所以,你需要設置內容窗格的背景:

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

請參見從Using Top Level Containers Swing的教程部分獲取更多信息和圖表顯示的框架內容窗格關係。