2012-02-11 58 views
8

訪問組件創建的IntelliJ上

我創建了一個新的項目,選擇創建一個圖形用戶界面的形式。然後我使用'generate'選項創建了主要方法,現在我在'helloWorld.java'文件中有這個代碼。

public class helloWorld { 


private JPanel myForm; 
private JLabel text; 

public static void main(String[] args) { 
    JFrame frame = new JFrame("helloWorld"); 
    frame.setContentPane(new helloWorld().myForm); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setPreferredSize(new Dimension(800, 600)); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
} 

我然後與添加的屬性,以我的HelloWorld類的頭字段名title設計師添加一個JLabel。我現在想在程序運行後在字段名稱上設置文本。

如果我有一個新的字符串作爲參數創建JLabel實例,並將其添加到我的JFrame,然後該程序用一個空指針異常崩潰。

如果我創建不帶任何參數JLabel中並調用的setText它,然後重新繪製的JFrame的,沒有任何反應。

我想一些我的在一個單一的線的問題:如何訪問,我已經使用GUI設計器創建的組件?

回答

11

首先,是的IntelliJ,它隱藏了許多你的樣板代碼的情況比較特殊,所以你的源代碼看起來其實比什麼引擎蓋下是怎麼回事簡單。

基本上,當您使用的IntelliJ GUI構建器,你最終對應到窗體源代碼,看起來像這樣:

public class DialogEditView { 

    private JPanel mainPanel; 
    private JLabel labelDescription; 
    private JLabel labelExample; 
    private JComboBox comboboxDEJC; 

} 

爲了能夠訪問這些,你可以簡單地添加getter方法該源文件:

public class DialogEditView { 

    private JPanel mainPanel; 
    private JLabel labelDescription; 
    private JLabel labelExample; 
    private JComboBox comboboxDEJC; 

    public JPanel getMainPanel() { 
     return mainPanel; 
    } 

    // etc. 

} 

再次,無論是的IntelliJ修改源代碼或自動地修改類文件,你(你可以在設置去/GUI構建器測試這兩個選項,看看他們做了什麼)。

如何訪問我使用GUI 設計器創建的組件?

您可以轉到與GUI對應的源代碼文件並添加getters。確保命名部件...

0

在你的綁定類,自動生成的初始化代碼看起來像:

private void $$$setupUI$$$() {} 

有關的IntelliJ的初始化代碼更多的信息請參閱本Jetbrains的文檔:Creating Form Initialization Code