2013-05-14 98 views
1

我有一個Gui我正在做一個程序,有一個外部容器居中的JFrame包含一個內部容器,包含22 * 12單元格。當我運行這個程序時,背景會閃爍白色並保持這種狀態。如果你能指出我出錯的地方,那就太棒了!swing gui閃爍的白色錯誤

public class Gui extends JFrame 
{ 
private JPanel outer, inner; 
private JLabel[][] labels = new JLabel[22][12]; 

public Gui() 
{ 
    setBackground(Color.black); 
    setSize(1000,1000); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new BorderLayout()); 

    outer = new JPanel(); 
    outer.setLayout(new BorderLayout()); 
    outer.setSize(620,920); 
    outer.setBackground(Color.white); 

    inner = new JPanel(); 
    inner.setLayout(new GridLayout(22,12,10,10)); 
    inner.setSize(600,900); 
    inner.setBackground(Color.white); 

    for (int i = 0; i < 22; i++) 
    { 
     for (int j = 0; j < 12; j++) 
     { 
      labels[i][j] = new JLabel(); 
      JLabel label = labels[i][j]; 
      label.setSize(50,50); 
      label.setBackground(Color.gray); 
      inner.add(label); 
     } 
    } 

    outer.add(inner, BorderLayout.CENTER); 
    add(outer, BorderLayout.CENTER); 
    } 
} 

將gui設置爲在實例化它的主類中可見。

gui的創建和尺寸正確。它從黑色背景開始,然後隨機變成白色並保持這種狀態。

編輯:如果這仍然是很重要的:

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

     public void run() 
     { 
      Gui gui = new Gui(); 
      gui.setVisible(true); 
     } 
    }); 
} 
+0

我想你在構造函數中忘記了'setVisible(true)'。嘗試這個。 – Smit 2013-05-14 15:46:46

+0

發佈您的main()方法,以便我們可以執行您的代碼。 – camickr 2013-05-14 15:51:11

回答

5

使用它跟着最終靜態命名約定新的靜態變量名。也就是變量應該是上置的:

//setBackground(Color.black); 
setBackground(Color.BLACK); 

不要對組件使用setSize()。相反,組件添加到所述幀,然後使用pack()的方法,以便各組分在它們的優選尺寸顯示:

//setSize(1000,1000); 
add(component1); 
add(anotherComponent); 
pack(); 

佈局管理器使用的優選尺寸的尺寸與一個佈局尖端:

//label.setSize(50,50); 
label.setPreferredSize(new Dimension(50, 50)); 

這是您的主要問題。一個JLabel是默認透明的,所以你設置背景色被忽略:

label.setBackground(Color.gray); 
label.setOpaque(true); 

順便說一句,我的屏幕身高只有738,所以不會事件能夠看到你的整個框架,因爲你想高度22 * 50。您應該意識到這一點,並可能將面板添加到JScrollPane,以便像我這樣的人可以真正使用您的應用程序。這就是爲什麼你不應該硬編碼一個首選大小。

+0

不錯的工作。非常堅實的分析。我非常感謝!現在很好用! – eatonphil 2013-05-14 15:53:05