我正在重新思考我的GUI设计。我使用Netbeans自动化图形用户界面设计了一些JFrame(是的,我很懒,而且这个生成的代码通常很糟糕,我知道!),但是现在我想让它们成为JPanel(实际上是从另一个继承JPanel的类继承) 。但是我修改了“setDefaultCloseOperation”,所以我的代码被破坏了:setDefaultCloseOperation对于JPanel是不可能的。由于我无法修改生成的代码,我想知道:是否有办法让Netbeans了解我改变了主意并重新生成了代码?从JFrame到Netbeans中的JPanel
回答
当我碰到这个(我以前做过同样的事情)时,通常最终不得不修改生成的代码XML文件(.form文件),或者只是复制我添加并粘贴到的所有控件一个新的JPanel。只是我的0.02美元,但要小心,这可以打破你的代码...
你可以看看Team > Local History
,看看你是否可以恢复。
恕我直言,NB不会在这种情况下管理自动重构;添加新面板并复制粘贴旧JFrame中的所有元素(其方法也将被复制)会更加容易。
难道你不能只是删除setDefaultCloseOperation()和任何其他调用不再在超类中的方法吗?现在做这个调用肯定没有意义,因为该类不是JFrame。
我现在不知道你破了什么,但我可以告诉你:你不能告诉Netbeans按照你描述的方式改变自己生成的代码。
你可以试试下面的(前务必进行备份):
- 打开YourPanel.java在一些编辑
- 删除符合
setDefaultCloseOperation...
。 - 替换所有
getContentPane()
与this
- 在最后一行删除
pack();
。 - 打开YourPanel.form在一些编辑
- 删除(内的所有内容)节点
<Properties>
- 删除节点
<SyntheticProperties>
。 - 在从
<Form ... type="...JPanelFormInfo">
根节点变化成<Form ... type="...JFrameFormInfo">
如我观察到据,表格文件内的所有内容可以被远离东西内<Layout>
删除。
祝你好运。
是的,你可以简单地复制并粘贴到JPanel。确保您的JPanel大小必须大于或等于现有的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。只需点击Edit,然后在GUI中更改一个值,这将强制重建生成的代码,这样它将删除不适用的属性。
它现在应该是固定的你.. 我希望这有点帮助!
'干杯!
我刚刚遇到了同样的问题,结果证明解决方案非常简单。
- 正如其他人所说,做一个文件的备份。
- 打开您的JFrame类并编辑它以扩展JPanel而不是JFrame。
- 剪下你的主要方法并把它放到另一个类中。
- 闭上你的NetBeans项目和NetBeans IDE
打开.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"
- 保存之后。再次打开netbeans项目(它将打开并出现错误)
- 修改JPanel的其中一个属性。
- 运行该程序。 Netbeans将自动摆脱只与JFrame关联的所有方法。它会运行良好。
希望能帮助别人!
- 1. 从NetBeans中的一个Jframe转到JPanel
- 2. 添加的JPanel到JFrame中的NetBeans
- 3. 将NetBeans Designer中的JFrame添加到JPanel
- 4. 使用NetBeans GUIBuilder更改JFrame中的JPanel
- 5. 图形与的JFrame /的JPanel/Netbeans的
- 6. JFrame中看不到JPanel中的子JPanel
- 7. 在从的JFrame JPanel中
- 8. 添加的JPanel到JFrame中
- 9. JFrame中的JPanel
- 10. 如何将JPanel添加到自动生成的netbeans JFrame中?
- 11. 如何在NetBeans中将JPanel类添加到JFrame表单类中?
- 12. 从JFrame中清除JPanel
- 13. 将JPanel添加到JFrame中
- 14. 把JFrame放到jPanel中
- 15. 将JPanel添加到JFrame中
- 16. JFrame中的Sandbox JPanel
- 17. 如何从一个JPanel值传递给一个JFrame在NetBeans
- 18. 将jpanel从方法添加到jframe
- 19. JFrame和JPanel居中
- 20. 添加GUI设计的JPanel到JFrame中
- 21. 调用JPanel到JFrame上
- 22. 将Jpanel添加到JFrame?
- 23. 将JFrame传输到JPanel
- 24. 动态添加JPanel到Jframe
- 25. 将jpanel添加到jframe
- 26. Java - 将JFrame传输到JPanel
- 27. JFrame中的CardLayout JPanel GUI
- 28. 更新JFrame中的JPanel
- 29. JPanel vs Java中的JFrame
- 30. 如何在NetBeans GUI编辑器中为JPanel分配JFrame?
你是如何从JFrame转换到JPanel的?你是否尝试设置一些属性来触发代码生成? – Puce 2010-12-02 19:34:44
Errr ...我在课程名称后改变了“扩展JFrame”。我试着改变属性,但它似乎没有改变任何东西... – Raveline 2010-12-02 19:44:27