Java,JFrame:getWidth()返回0

时间:2011-08-09 16:49:12

标签: java swing jframe

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: 在将它设置为可见和东西之前,我需要框架的大小。我需要为框架添加其他控件,它们的坐标和大小取决于框架的大小。

2 个答案:

答案 0 :(得分:12)

你得到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());

答案 1 :(得分:10)

你尚未实现(即setVisible(true)JFrame。因此,它没有规模,因为它没有列出其组件。