Java:获取JFrame内容的大小

时间:2013-12-11 02:13:37

标签: java swing jframe frame layout-manager

如何获得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]

1 个答案:

答案 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)可能是您的门票。