如何获得JFrame frame = new JFrame()
的实际内容大小?
我正在尝试frame.getContentPane().getSize()
但由于某种原因它会一直返回0。
代码:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);
frame.setVisible(true);
输出:
java.awt.Dimension[width=0,height=0]
答案 0 :(得分:2)
您只能在渲染JFrame后获得大小,否则当前大小 [0,0]。因此,在 getSize()
之后,仅拨打setVisible(true)
。
好奇 - 你为什么需要这些信息?
编辑1
根据你的代码:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// Dimension windowSize = frame.getContentPane().getSize();
// System.out.println(windowSize);
frame.setVisible(true);
Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);
编辑2
您在评论中说明:
我需要将面板设置为内容窗格宽度的一半。感谢
此信息应该出现在原始问题中,因为它比您尝试获取大小更重要。事实上,您的问题是XY problem
的一个很好的例子解决方案不来获取尺寸,但要使用可以为您完成此工作的布局管理器,此处GridLayout(1, 2)
可能是您的门票。