2010-02-24 117 views
2

此标题可能不能最好地描述我的问题。我正在使用Netbean GUI构建器来创建JFrame和多个JPanel。我在一个独立的类中创建每个JPanel,然后将JPanel类拖到JFrame。问题是在将JPanel拖到JFrame之后,如果我将组件添加到JPanel,它不会在JFrame中包含的JPanel中显示其他组件。我尝试了“清理并构建”,但新组件仍未在JFrame中显示 - > JPanel。添加新组件后,Netbeanw不会刷新JPanel

回答

1

Matisse保留添加到调色板的任何组件的缓存副本。所以,后续更改不会自动提取。拿起变化:

  • 保存并关闭您的JFrame源
  • 确保JPanel组件编译。
  • 点击Tools > Palette > Swing/AWT Components
  • 右键单击树,然后选择Refresh
  • 打开JFrame组件。现在应该显示更新的组件
+0

不幸的是,这种方法不适用于我的NB6.8(Mac)......您测试过这种方法的哪个NB?谢谢! – Patrick 2010-02-27 22:08:22

+0

在Windows XP上的NB6.8。但是,它在Ubuntu上也适用于我。一定要执行完整的构建,否则你可以在build/classes中使用一个.class文件,并在jar中使用另一个.class文件。马蒂斯总是会使用罐子里的那个。即使build/classes中的一个更新。 – 2010-03-01 16:06:28

1

我知道你的意思; Matisse(NetBeans的GUI编辑器)允许您将自组装的容器(例如JPanels)拖放到其他容器(例如JFrames)中,但后者中的任何后续更改都不会反映在后者中。据我所知,不幸的是,这只是它的工作方式。

这是我认为马蒂斯只能用于快速原型设计和玩耍的原因之一。对于任何严重的问题,GUI都必须手动编码。

0

有同样的问题,所有你需要做的是:

1)重新编译的新JPanel子
2)关闭与母公司相关的形式JPanel的
3)重新打开来自刷新子面板现在应该显示的项目树

再次父的JPanel。当您打开表单或添加新的子面板时,Matisse只会呈现子面板。因此,刷新显示而不移除并重新添加子面板的唯一方法是关闭并重新打开它。