Java,JFrame:getWidth()返回0

setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH); setResizable(false); setUndecorated(true); System.out.println("--------> "+getContentPane().getWidth()); //----> 0 why is this happening? 

我正在尝试确定JFrame的大小。 我在谷歌搜索并检查了文档,我仍然不知道为什么它不会工作它在任何其他控件上工作正常我尝试它

编辑:如果我替换,frame.getWidth()在类外部(扩展JFrame)调用时仍然有效

 System.out.println("--------> "+getContentPane().getWidth()); 

 System.out.println("--------> "+this.getWidth()); 

getWidth仍将返回0

EDIT2:我需要框架的大小才能将其设置为可见和东西。 我需要为框架添加其他控件,它们的坐标和大小取决于框架的大小。

你得到0的原因是因为你没有调用pack(),setSize(int,int)或setSize(Dimension)中的任何一个。 这只是在调用其中一种方法时才会计算帧的布局。

 JFrame frame = new JFrame("My Frame"); frame.setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH); frame.setResizable(false); frame.setUndecorated(true); frame.pack(); // Important line!!! frame.setVisible(true); System.out.println("--------> "+getContentPane().getWidth()); 

你还没有意识到 (即setVisible(true)JFrame 。 因此,它没有任何尺寸,因为它没有布置其组件。