2012-09-07 82 views
1

我很新的Java。我不知道我的框架有什麼問題。我把尺寸設置爲300和200. 我看到的是一個短而胖的棒狀物。swing - JFrame不顯示實際尺寸

下面是我的代碼:

import java.awt.Color; 
import java.awt.Container; 
import java.awt.FlowLayout; 

import javax.swing.JFrame; 

public class BicycleDemo extends JFrame { 
    /** 
    * The serialVersionUID. 
    */ 
    private static final long serialVersionUID = -4541236176053545919L; 

    public static void createGUI() { 
      JFrame jFrame = new JFrame("JFrame Demo"); 
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

      Container container = jFrame.getContentPane(); 
      container.setLayout(new FlowLayout()); 
      container.setBackground(Color.BLACK); 

      jFrame.setSize(300, 200); 
      jFrame.setResizable(false); 
      jFrame.pack(); 
      jFrame.setVisible(true); 
    } 

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

請幫助。

+2

'pack()'調整你的JFrame的大小。在'pack()'之後執行'setSize',或根本不執行'pack()'。 – Richante

回答

1

您正在致電pack()。方法將框架調整爲儘可能最小的尺寸以容納所有元素。因此,實際上您將大小設置爲200 x 300,然後使用pack()再次調整幀大小。

但請注意,「保留所有元素」是通過它們的首選大小來計算的,在很多情況下它們的大小隻有0x0像素。

+0

非常感謝!這解決了它。我會在幾分鐘後接受它。 – TheOnlyIdiot

+1

任何機會,你可以編輯*「..在很多情況下。」*像*「..如果調用得太快。」*? –

+2

_通過他們的最小尺寸_錯誤計算:它的_preferred_尺寸計算 – kleopatra