【问题标题】:How to get real JPanel Size?如何获得真正的JPanel Size?
【发布时间】:2012-08-14 04:26:42
【问题描述】:

我应该如何在 JFrame 中获得真正的 JPanel 大小?

【问题讨论】:

  • "通过真正的呼叫getSize()。"该方法可能在实现之前被调用。如需更具体的建议,请发帖SSCCE
  • 正如@Andrew 所说。但是在它被渲染之前你不能这样做。

标签: java swing size jpanel


【解决方案1】:

尺寸会0,0直到显示出来,因为组件和布局没有事先计算好。

【讨论】:

  • jPanel的子组件在得到真正的宽度和高度后是否有任何回调来初始化它?
  • 有没有办法强制布局计算组件位置和大小而不调用setVisible(true)
  • @SakkeerHussain 如果您在 JFrame 上调用 setVisible(true) 并使用 SwingUtilities#invokeLater(java.lang.Runnable) after 对可运行对象进行排队,则该可运行对象将在面板分配其大小后执行。但是,使用此方法,您必须事先初始化面板,并在它实际可见后对其进行更新。
【解决方案2】:

thePanel.getSize();

这会返回维度。

我有时会添加一个 ComponentListener 来在调整面板大小时显示尺寸。

编辑:如果你想要 JFrame 内容窗格的大小,那么

theFrame.getContentPane().getSize();

【讨论】:

  • 它没有给出实际尺寸 java.awt.Dimension[width=0,height=0] 我以前用过这个
  • @RobertKilar km 一半回答了您的问题,将 ComponentLsterner 添加到您感兴趣的面板并监控 componentResized 事件
  • @RobertKilar 您可能在渲染之前获得了大小。尝试组件侦听器的调整大小事件处理程序。
猜你喜欢
  • 2011-11-05
  • 2012-04-22
  • 1970-01-01
  • 2022-07-31
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2021-11-29
相关资源
最近更新 更多