[英]From JFrame to JPanel in Netbeans
我正在重新思考GUI的设计。 我用Netbeans自动GUI设计了一些JFrame(是的,我很懒,这个生成的代码通常很糟糕,我知道!),但现在我希望它们是JPanel(实际上,从继承JPanel的另一个类继承) 。 但是我修改了“setDefaultCloseOperation”,所以我的代码被破坏了:对于JPanel来说,setDefaultCloseOperation是不可能的。 由于我无法修改生成的代码,我想知道:有没有办法让Netbeans明白我改变主意,重新生成代码?
当我遇到这个问题时(我以前做过同样的事情)我通常最终必须修改生成的代码XML文件(.form文件)或者只是复制我添加的所有控件并粘贴到新的JPanel中。 只需我0.02美元,但要注意这可能会破坏你的代码......
恕我直言,在这种情况下,nb不会管理自动重构; 添加新面板并复制粘贴旧JFrame中的所有元素会更容易(他们的方法也会被复制)。
在执行此操作之前,请关闭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。 只需点击编辑,然后在GUI中更改一个值,这将强制它重建生成的代码,这样它将删除不适用的属性。
现在应该为你修好..我希望这有点帮助!
'干杯!
您可以查看“ Team > Local History
以查看是否可以还原。
我遇到了同样的问题,事实证明解决方案非常简单。
在位于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"
希望有人帮助!
你不能只删除setDefaultCloseOperation()以及对超类中不再存在的方法的任何其他调用吗? 由于该类不是JFrame,因此进行此调用绝对没有意义。
我现在不知道你打破了什么,但我可以告诉你:你不能告诉Netbeans以你描述的方式改变他自己生成的代码。
您可以尝试以下操作(请务必先进行备份):
setDefaultCloseOperation...
删除该行setDefaultCloseOperation...
this
替换所有getContentPane()
pack();
在最后一行。 <Properties>
(及其中的所有内容) <SyntheticProperties>
。 <Form ... type="...JPanelFormInfo">
更改为<Form ... type="...JFrameFormInfo">
据我观察,除了<Layout>
的内容之外,可以删除表单文件中的所有内容。
祝好运。
是的,您只需将其复制并粘贴到JPanel即可。 确保JPanel大小必须大于或等于现有JFrame容器大小。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.