我正在重新思考我的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