2012-02-21 163 views
2

這可能是一個非常愚蠢的錯誤,但是iv'e剛剛開始學習.awt軟件包。我跟着一個教程,在視頻中他的窗口背景是紅色的,我的代碼沒有錯誤,但它不會改變背景顏色。 感謝您的幫助!Java窗口未設置背景顏色?

import java.awt.Color; 
import javax.swing.*; 
public class Test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
JFrame f = new JFrame(); 
f.setVisible(true); 
f.setSize(350,350); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.setTitle("Window"); 
f.setBackground(Color.RED); 
    } 

} 
+0

不確定 - 但可能將setVisible移動到最後 - 那麼您將獲得當前設置而不必以某種方式進行刷新。 – Randy 2012-02-21 19:12:09

+0

不這樣做我很害怕!這裏是視頻+我的小程序,以防止色盲! http://www.youtube.com/watch?v=uK2BscDZyNo&feature=relmfu http://i.imgur.com/LQMOL.png – Icy100 2012-02-21 19:14:59

回答

10

1)JFrame不能做到這一點,你必須改變Color內容窗格例如

JFrame.getContentPane().setBackground(myColor) 

2)你需要包裝(在main方法)GUI相關的代碼的invokeLater

例如:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class GUI { 

    public GUI() { 
     JFrame frame = new JFrame(); 
     frame.setTitle("Test Background"); 
     frame.setLocation(200, 100); 
     frame.setSize(600, 400); 
     frame.addWindowListener(new WindowAdapter() { 

      @Override 
      public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 
     frame.getContentPane().setBackground(Color.BLUE); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       GUI gUI = new GUI(); 
      } 
     }); 
    } 
} 
+0

知道了,謝謝! – Icy100 2012-02-21 19:21:34

4

代替

f.setBackground(Color.RED); 

呼叫

f.getContentPane().setBackground(Color.RED); 

內容窗格顯示內容。

作爲一個方面說明,這裏有一個JFrame小費:你可以撥打f.add(child),這個孩子將被添加到你的內容窗格中。

+0

謝謝......我需要學會更快地回答......並在我回答時忽略我的同事:) – Paul 2012-02-21 19:31:02