[英]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.