2010-12-02 119 views
5

我正在重新思考我的GUI設計。我使用Netbeans自動化圖形用戶界面設計了一些JFrame(是的,我很懶,而且這個生成的代碼通常很糟糕,我知道!),但是現在我想讓它們成爲JPanel(實際上是從另一個繼承JPanel的類繼承) 。但是我修改了「setDefaultCloseOperation」,所以我的代碼被破壞了:setDefaultCloseOperation對於JPanel是不可能的。由於我無法修改生成的代碼,我想知道:是否有辦法讓Netbeans瞭解我改變了主意並重新生成了代碼?從JFrame到Netbeans中的JPanel

+0

你是如何從JFrame轉換到JPanel的?你是否嘗試設置一些屬性來觸發代碼生成? – Puce 2010-12-02 19:34:44

+0

Errr ...我在課程名稱後改變了「擴展JFrame」。我試着改變屬性,但它似乎沒有改變任何東西... – Raveline 2010-12-02 19:44:27

回答

5

當我碰到這個(我以前做過同樣的事情)時,通常最終不得不修改生成的代碼XML文件(.form文件),或者只是複製我添加並粘貼到的所有控件一個新的JPanel。只是我的0.02美元,但要小心,這可以打破你的代碼...

1

你可以看看Team > Local History,看看你是否可以恢復。

3

恕我直言,NB不會在這種情況下管理自動重構;添加新面板並複製粘貼舊JFrame中的所有元素(其方法也將被複制)會更加容易。

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

2

在執行此操作之前,請在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中更改一個值,這將強制重建生成的代碼,這樣它將刪除不適用的屬性。

它現在應該是固定的你.. 我希望這有點幫助!

'乾杯!

0

我剛剛遇到了同樣的問題,結果證明解決方案非常簡單。

  1. 正如其他人所說,做一個文件的備份。
  2. 打開您的JFrame類並編輯它以擴展JPanel而不是JFrame。
  3. 剪下你的主要方法並把它放到另一個類中。
  4. 閉上你的NetBeans項目和NetBeans IDE
  5. 打開.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" 
  1. 保存之後。再次打開netbeans項目(它將打開並出現錯誤)
  2. 修改JPanel的其中一個屬性。
  3. 運行該程序。 Netbeans將自動擺脫只與JFrame關聯的所有方法。它會運行良好。

希望能幫助別人!