2015-07-12 67 views
0

我的Java JFrame几乎每次启动时都会启动不同的大小。它要么是我想要的尺寸(800x600),要么尺寸太小,无法做任何事情。JFrame每次发布都会发布不同的大小

public static void initFrame() { 

    JFrame frame = new JFrame("Test"); 
    frame.setVisible(true); 
    frame.setMinimumSize(new Dimension(800,600)); 
    frame.setMaximumSize(new Dimension(800,600)); 
    frame.setSize(800,600); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(false); 
} 

我从另一个类推出:

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      Frame.initFrame(); 
     } 
}); 
+1

我试过了代码,大小是固定的......那么真正的问题是什么? –

+1

主要的罪魁祸首是对'setVisible(true)'的调用,很久以前,组件实际上被添加到'JFrame'中(因为'JFrame'的大小尚未实现)。首先将组件添加到'JFrame',然后调用'setVisible(true)' –

+0

并且不要忘记'pack()'! – trashgod

回答

1

尝试移动frame.setVisible(true);到最后,这样编译器将使其可见之前阅读JFrame的大小。