setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
setResizable(false);
setUndecorated(true);
System.out.println("--------> "+getContentPane().getWidth()); //----> 0 why is this happening?
I'm trying to determine the size of a JFrame. I've searched on google and checked the documentation and I still don't know why it won't work
It works fine on about any other control I try it on
EDIT:
frame.getWidth() works when called outside of the class (that extends JFrame)
still, if I replace
System.out.println("--------> "+getContentPane().getWidth());
with
System.out.println("--------> "+this.getWidth());
getWidth will still return 0
EDIT2:
I need the frame's size before setting it visible and stuff. I need to add other controls to the frame and their coordinates and size depend on the frame's size.
解决方案
The reason why you got 0 is because you didn't call any of the pack(), setSize(int, int) or setSize(Dimension). This is only when calling one of these method that the layout of your frame will be computed.
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());
本文探讨了在Java Swing中如何正确获取最大化JFrame的尺寸。通过调用pack()方法来确保布局管理器计算出正确的窗口尺寸,从而避免getWidth()返回0的问题。
341

被折叠的 条评论
为什么被折叠?



