Java Netbeans中从JFrame到JPanel

Java Netbeans中从JFrame到JPanel,java,swing,netbeans,Java,Swing,Netbeans,我正在重新考虑GUI的设计。我设计了一些带有Netbeans自动化GUI的JFrame(是的,我很懒,我知道生成的代码通常很糟糕!),但现在我希望它们是JPanel(实际上,从继承JPanel的另一个类继承)。但是我修改了“setDefaultCloseOperation”,所以我的代码被破坏了:setDefaultCloseOperation对于JPanel是不可能的。由于我无法修改生成的代码,我想知道:有没有办法让Netbeans明白我改变了主意,并重新生成代码 当我遇到这个问题时(我以前也

我正在重新考虑GUI的设计。我设计了一些带有Netbeans自动化GUI的JFrame(是的,我很懒,我知道生成的代码通常很糟糕!),但现在我希望它们是JPanel(实际上,从继承JPanel的另一个类继承)。但是我修改了“setDefaultCloseOperation”,所以我的代码被破坏了:setDefaultCloseOperation对于JPanel是不可能的。由于我无法修改生成的代码,我想知道:有没有办法让Netbeans明白我改变了主意,并重新生成代码

当我遇到这个问题时(我以前也做过同样的事情),我通常不得不修改生成的代码XML文件(.form文件),或者只是复制我添加的所有控件并粘贴到新的JPanel中。只是我的$0.02,但请注意,这可能会破坏您的代码…

您可能会查看
团队>本地历史
以查看是否可以恢复。

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

您不能删除setDefaultCloseOperation()和对不再在超类中的方法的任何其他调用吗?既然类不是JFrame,那么进行此调用显然毫无意义。

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

您可以尝试以下操作(请确保在之前进行备份):

  • 在某个编辑器中打开YourPanel.java
  • 使用
    setDefaultCloseOperation…
    删除该行
  • 将所有
    getContentPane()
    替换为
    this
  • 删除
    pack()在最后一行
  • 在某个编辑器中打开您的panel.form
  • 删除节点
    (以及其中的所有内容)
  • 删除节点
  • 在根节点中,从
    更改为
  • 据我观察,除了
    中的内容之外,表单文件中的所有内容都可以删除


    祝你好运。

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

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

    我刚刚遇到了这个问题,并通过更改.form文件修复了它,该文件与给定类型的.java文件一起出现。 在此XML文件的顶部,您将看到:

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

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

    它现在应该为您修复。。 我希望这有点帮助


    “干杯

    我也遇到了同样的问题,结果证明解决方法相当简单

  • 正如其他人所说,备份您的文件
  • 打开JFrame类并编辑它以扩展JPanel而不是JFrame
  • 切掉你的主方法,把它放到另一个类中
  • 关闭您的netbeans项目和netbeans IDE
  • 在src文件夹中的文本编辑器中打开.form文件,并更改第一行:

    Form=“1.5”maxVersion=“1.8”type=“org.netbeans.modules.Form.forminfo.JFrameFormInfo”

  • 为此:

    Form="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"
    
  • 在你救了他之后。再次打开netbeans项目。(它将打开时出错)
  • 修改JPanel的一个属性
  • 运行该程序。Netbeans将自动删除所有只与JFrame关联的方法。它会运行良好

  • 希望这对别人有帮助

    您是如何从JFrame转换为JPanel的?您是否尝试设置一些属性来触发代码生成?错误。。。我只是在我的类名后更改了“extensdjframe”。我试着改变属性,但它似乎没有改变任何东西……好吧,Puce的想法对我的一个JFrame有效,并按照Dave的建议与XML混合,奇怪的是,使它重新生成代码。谢谢你的回答!
    type="org.netbeans.modules.form.forminfo.JPanelFormInfo"
    
    Form="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"