从JFrame到Netbeans中的JPanel

5

我正在重新考虑我的GUI设计。我用Netbeans自动化GUI设计了一些JFrame(是的,我很懒,并且这个生成的代码通常非常糟糕,我知道!),但现在我想把它们变成JPanel(实际上,继承自另一个继承自JPanel的类)。但我修改了"setDefaultCloseOperation",所以我的代码出错了:为JPanel设置setDefaultCloseOperation是不可能的。既然我无法修改生成的代码,我想知道:有没有办法让Netbeans理解我改变了主意,重新生成代码?


你是如何将JFrame转换为JPanel的?并且你尝试设置了一些属性来触发代码生成吗? - Puce
我刚刚在类名后更改了“extends JFrame”。我尝试更改属性,但似乎没有改变任何东西... - Raveline
好的,Puce 的想法对我的一个 JFrame 有效,按照 Dave 建议的修改 XML 竟然使它重新生成了代码。感谢你们的回答! - Raveline
8个回答

5

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


3

在我看来,nb在这种情况下无法进行自动重构;更容易的方法是添加新的面板,并从旧的JFrame中复制粘贴所有元素(它们的方法也将被复制)。


2
在进行此操作之前,请关闭Netbeans中的文件并备份您要编辑的.java和.form文件。
我刚遇到了这个问题,并通过更改随给定类型的.java文件一起使用的.form文件来解决它。 在该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中更改一个值,这将强制重新生成代码,并删除不适用的属性。

现在应该已经修复了。

希望这能帮到您!

谢谢!


1

你可以查看 团队 > 本地历史 来尝试还原。


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容器大小。 :)


0

我之前也遇到了同样的问题,结果解决方案非常简单。

  1. 像其他人建议的那样,备份你的文件。
  2. 打开你的JFrame类并将其编辑为扩展JPanel而不是JFrame。
  3. 剪切你的main方法并将其放入另一个类中。
  4. 关闭你的NetBeans项目和NetBeans IDE。
  5. 在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"
  1. 保存后,再次打开NetBeans项目(会出现错误)。
  2. 修改JPanel的一个属性。
  3. 运行程序。NetBeans将自动删除所有仅与JFrame相关联的方法,并且它将正常运行。

希望这能帮助到某些人!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接