2010-03-13 31 views

回答

11

當您在GUI編輯器中創建UI時,IDE將重新生成initComponents()方法。該方法是'保護',以防止這種再生覆蓋用戶書面代碼。

有一對夫婦的方式將代碼添加到該方法,間接地:

  1. 落一個新的組件到設計 編輯器「畫布」的窗口。

  2. 輸入碼作爲 下面的代碼屬性之一的一部分: 預創建代碼,後創作 代碼,預初始化代碼,後初始化代碼, 後監聽器代碼,預填充 代碼,後人口代碼和 全部設置代碼。

    還有一些其他代碼屬性不會改變initComponents()方法......但可能非常有用:預聲明代碼和後聲明代碼。 alt text http://blogs.sun.com/vkraemer/resource/code-properties.png 注意:這些屬性的編輯器不是'豐富'的,所以我建議在「常規編輯器」中創建方法,您只需在initComponents()中調用該方法即可。

可以通過定位或改變「底板」或控件的「常規」屬性修改在的initComponents代碼()方法。

13

是的initComponents方法是隻讀的,以保持對IDE的完全控制。你可以在initComponents之後的構造函數中添加你的。

public class NewJFrame extends javax.swing.JFrame { 

/** Creates new form NewJFrame */ 
public NewJFrame() { 
    initComponents(); 
    myInitComponents(); 
} 

public void myInitComponents() { 
} 
+0

這篇文章是undereppreciated,是一個非常乾淨的方式添加自定義組件。謝謝。 – Jigzat

+0

它適用於我和代碼仍然或多或少乾淨和可讀非常感謝;-) – Sangimed

+0

建議替代[這裏](http://stackoverflow.com/a/2561540/230513)。 – trashgod

2

要允許在源代碼和Matisse GUI編輯器中進行更改,NetBeans將禁止在它所稱的「保護塊」中進行編輯。 雖然您可以想象IDE能夠解釋您編寫的幾乎任何類型的GUI代碼,但實際上,IDE開發人員更容易將自動生成的GUI代碼封裝在單個方法(initComponents())中並保留休息供您編輯。

如果你一定要知道自己在做什麼,你可以方便地編輯從外部編輯器中的.java文件,但:

  1. 一定要保存當前版本的某處
  2. 檢查通過在NetBeans可視化編輯器中打開課程,您的更改不會造成任何問題
3

推測您正在做的是使用Matisse GUI工具編寫應用程序。

馬蒂斯生成不可編輯的代碼塊。這是Matisse所要求的,以便該工具保持與代碼庫的同步。

Matisse提供了多種選項,允許在代碼塊之前,之後或之內插入自定義代碼,例如initComponents()

參見下面的圖像:

Code insertion

此示出了用於一個JPanel和一些代碼插入選項的屬性標籤。

1

我通過試驗和錯誤發現,在用戶看到面板之前需要完成的初始化應當添加爲「預先初始化代碼」。在我的情況下,我需要填充一個下拉框(在AWT中稱爲「選擇」)。似乎有關於使用Matisse的詳細文檔很少。所以,我希望這會幫助其他人。

2

如果在Design View中右鍵單擊組件,然後單擊「Customize Code」選擇,則可以修改InitComponent代碼中的代碼。可以定製幾行顯式代碼。

0

選擇所有的代碼並複製到像gedit或記事本這樣的外部編輯器中。

然後刪除你的jframe文件。

在netbeans中使用相同名稱在同一個包中創建一個新的java類。

複製編輯器文件中的所有內容並將其粘貼到新創建的Java類中。

0
  1. 關閉Netbeans的
  2. 轉到那裏是你的表單文件
  3. 備份的2個文件的擴展名「.FORM」和「的.java」
  4. 編輯2個文件的擴展名」文件夾路徑。形式「和」.java「在記事本編輯器中。例如,如果您的表單名稱是「myForm」,則必須在文件夾中包含「myForm.form」和「myForm.java」文件。
  5. 第一個文件「.form」是xml文件,第二個「.java」是java代碼
  6. 在兩個文件中仔細編輯代碼保存更改並打開NETBEANS。 那就是它!
相關問題