【问题标题】:Automatically resize JPanel without use BorderLayout.CENTER不使用 BorderLayout.CENTER 自动调整 JPanel 的大小
【发布时间】:2015-01-10 19:48:51
【问题描述】:

我在JDesktopPane 中有一个JPanel,当 desktopPane 的大小发生变化时,我需要自动调整面板的大小。

面板的大小始终需要与desktopPane 相同。我不能使用BorderLayout.CENTER,因为如果我使用它,我无法调整desktopPane 内的其他框架的大小。

谢谢

【问题讨论】:

  • 面板应该跨越整个桌面面板,但还有其他框架?我想说你需要澄清你到底想要达到什么目标。
  • 我有一个 desktopPane,我需要在里面放一个 JPanel。 JPanel 需要始终与 desktopPane 的大小相同。在 desktopPane 中,我可以打开其他框架。

标签: java swing jpanel jdesktoppane


【解决方案1】:

使用组件监听器/适配器

JDesktopPane desktop = ...;
JPanel p = ...;

ComponentListener cl = new ComponentAdapter() {
  public void componentResized(ComponentEvent ce) {
    //reset your panel size here
  }
}

desktop.addComponentListener(cl);

【讨论】:

  • 你知道一些听众知道 desktopPane 的颜色何时改变吗?像这个监听器一样知道大小何时更改?
  • 你应该试试 PropertyChangeListener... 它可能有效,也可能无效。如果没有,您可以继承 JDesktopPane 并覆盖其 setColor 方法以使用 PropertyChangeListener 或使用您自己的自定义侦听器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2013-09-28
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多