【问题标题】:Java: Get Size of JFrame ContentJava:获取 JFrame 内容的大小
【发布时间】:2013-12-11 02:13:37
【问题描述】:

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

【问题讨论】:

  • 检索大小时,是否显示框架?给我们看一些代码。

标签: java swing jframe frame layout-manager


【解决方案1】:

你只能在 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) 可能是您的票。

【讨论】:

  • 我需要将面板设置为内容面板宽度的一半。谢谢
  • @VinnieCaprarola:见 编辑 2
  • 试试BorderLayout,使用左右面板(西和东);他们将用一条垂直线划分面板,并通过调整大小来保持半面板大小,而无需您进行进一步的编码工作。
猜你喜欢
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多