2012-09-07 66 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