2010-12-02 72 views
5

我正在重新思考我的GUI设计。我使用Netbeans自动化图形用户界面设计了一些JFrame(是的,我很懒,而且这个生成的代码通常很糟糕,我知道!),但是现在我想让它们成为JPanel(实际上是从另一个继承JPanel的类继承) 。但是我修改了“setDefaultCloseOperation”,所以我的代码被破坏了:setDefaultCloseOperation对于JPanel是不可能的。由于我无法修改生成的代码,我想知道:是否有办法让Netbeans了解我改变了主意并重新生成了代码?从JFrame到Netbeans中的JPanel

+0

你是如何从JFrame转换到JPanel的?你是否尝试设置一些属性来触发代码生成? – Puce 2010-12-02 19:34:44

+0

Errr ...我在课程名称后改变了“扩展JFrame”。我试着改变属性,但它似乎没有改变任何东西... – Raveline 2010-12-02 19:44:27

回答

5

当我碰到这个(我以前做过同样的事情)时,通常最终不得不修改生成的代码XML文件(.form文件),或者只是复制我添加并粘贴到的所有控件一个新的JPanel。只是我的0.02美元,但要小心,这可以打破你的代码...

1

你可以看看Team > Local History,看看你是否可以恢复。

3

恕我直言,NB不会在这种情况下管理自动重构;添加新面板并复制粘贴旧JFrame中的所有元素(其方法也将被复制)会更加容易。

0

难道你不能只是删除setDefaultCloseOperation()和任何其他调用不再在超类中的方法吗?现在做这个调用肯定没有意义,因为该类不是JFrame。

0

我现在不知道你破了什么,但我可以告诉你:你不能告诉Netbeans按照你描述的方式改变自己生成的代码。

你可以试试下面的(前务必进行备份):

  1. 打开YourPanel.java在一些编辑
  2. 删除符合setDefaultCloseOperation...
  3. 替换所有getContentPane()this
  4. 在最后一行删除pack();
  5. 打开YourPanel.form在一些编辑
  6. 删除(内的所有内容)节点<Properties>
  7. 删除节点<SyntheticProperties>
  8. 在从<Form ... type="...JPanelFormInfo">根节点变化成<Form ... type="...JFrameFormInfo">

如我观察到据,表格文件内的所有内容可以被远离东西内<Layout>删除。

祝你好运。

0

是的,你可以简单地复制并粘贴到JPanel。确保您的JPanel大小必须大于或等于现有的JFrame容器大小。 :)

2

在执行此操作之前,请在Netbeans中关闭该文件并备份您即将编辑的.java和.form文件。

我刚刚遇到了这个问题,并通过更改.form文件来解决此问题,该文件随您的.java文件一起提供给定类型。 在这个XML文件的顶部,你会看到:

<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> 

只是将其更改为:我只是改变了这部分

<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> 

注意:

type="org.netbeans.modules.form.forminfo.JPanelFormInfo" 

完成此操作后,请重新打开netbeans中的文件,它现在会告诉您存在错误,这是因为您可能设置了一些属性,这些属性不适用于JPanel,但适用于JFrame。只需点击Edit,然后在GUI中更改一个值,这将强制重建生成的代码,这样它将删除不适用的属性。

它现在应该是固定的你.. 我希望这有点帮助!

'干杯!

0

我刚刚遇到了同样的问题,结果证明解决方案非常简单。

  1. 正如其他人所说,做一个文件的备份。
  2. 打开您的JFrame类并编辑它以扩展JPanel而不是JFrame。
  3. 剪下你的主要方法并把它放到另一个类中。
  4. 闭上你的NetBeans项目和NetBeans IDE
  5. 打开.FORM文件位于src文件夹文本editer并改变从这个第一行:

    表=“1.5” MAXVERSION =” 1.8" 型= “org.netbeans.modules.form.forminfo.JFrameFormInfo”

这样:

Form="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo" 
  1. 保存之后。再次打开netbeans项目(它将打开并出现错误)
  2. 修改JPanel的其中一个属性。
  3. 运行该程序。 Netbeans将自动摆脱只与JFrame关联的所有方法。它会运行良好。

希望能帮助别人!