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 :(得分: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
。因此,它没有规模,因为它没有列出其组件。