我正在重新考虑我的GUI设计。我用Netbeans自动化GUI设计了一些JFrame(是的,我很懒,并且这个生成的代码通常非常糟糕,我知道!),但现在我想把它们变成JPanel(实际上,继承自另一个继承自JPanel的类)。但我修改了"setDefaultCloseOperation",所以我的代码出错了:为JPanel设置setDefaultCloseOperation是不可能的。既然我无法修改生成的代码,我想知道:有没有办法让Netbeans理解我改变了主意,重新生成代码?
我正在重新考虑我的GUI设计。我用Netbeans自动化GUI设计了一些JFrame(是的,我很懒,并且这个生成的代码通常非常糟糕,我知道!),但现在我想把它们变成JPanel(实际上,继承自另一个继承自JPanel的类)。但我修改了"setDefaultCloseOperation",所以我的代码出错了:为JPanel设置setDefaultCloseOperation是不可能的。既然我无法修改生成的代码,我想知道:有没有办法让Netbeans理解我改变了主意,重新生成代码?
当我遇到这种情况时(我以前也做过同样的事情),我通常不得不修改生成的代码XML文件(.form文件)或者只是将我添加的所有控件复制并粘贴到一个新的JPanel中。只是我的$0.02,但请注意这可能会破坏您的代码...
在我看来,nb在这种情况下无法进行自动重构;更容易的方法是添加新的面板,并从旧的JFrame中复制粘贴所有元素(它们的方法也将被复制)。
<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而言是可用的。只需点击“编辑”,然后在GUI中更改一个值,这将强制重新生成代码,并删除不适用的属性。
现在应该已经修复了。
希望这能帮到您!
谢谢!
你可以查看 团队 > 本地历史
来尝试还原。
你能不能只删除setDefaultCloseOperation()和任何其他调用不再在超类中的方法?现在这个类不是JFrame,所以这个调用肯定没有意义。
我不知道你破坏了什么,但我可以告诉你:你不能像你描述的那样告诉Netbeans更改自己生成的代码。
你可以尝试以下步骤(一定要备份):
setDefaultCloseOperation...
的行。getContentPane()
替换为this
pack();
<Properties>
(以及其中的所有内容)<SyntheticProperties>
<Form ... type="...JPanelFormInfo">
更改为<Form ... type="...JFrameFormInfo">
据我观察,表单文件中除了<Layout>
中的内容外,其他都可以删除。
祝你好运。
是的,您可以将其简单地复制并粘贴到JPanel中。请确保您的JPanel大小必须大于或等于现有的JFrame容器大小。 :)
我之前也遇到了同样的问题,结果解决方案非常简单。
在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"
希望这能帮助到某些人!