2012-02-11 34 views
8

GUIデザイナーを使用する前にSwingを使用しましたが、コンポーネントへのアクセスに問題があります。IntelliJのGUIデザイナーで作成されたコンポーネントへのアクセス

私は新しいプロジェクトを作成し、GUIフォームを作成することを選択しました。次に、 'generate'オプションを使用してmainメソッドを作成しました。このコードは、 '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に追加すると、NULLポインタ例外が発生してプログラムがクラッシュします。

引数なしでJLabelを作成し、setTextを呼び出してからJFrameで再描画すると、何も起こりません。

私の問題は1行でわかります。GUIデザイナーを使用して作成したコンポーネントにはどのようにアクセスしますか?

答えて

11

最初に、IntelliJはボイラープレートコードを隠すという点でちょっと特殊なので、ソースコードは本当にボンネット内で実際に行われているものよりも単純に見えます。

基本的に、あなたはIntelliJのGUIビルダーを使用する場合、あなたはこのようになりますあなたのフォームに対応するソースコードで終わる:これらにアクセスできるようにするに

public class DialogEditView { 

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

} 

、あなたは単にゲッターを追加することができますそのソースファイル:もう一度

public class DialogEditView { 

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

    public JPanel getMainPanel() { 
     return mainPanel; 
    } 

    // etc. 

} 

、IntelliJのいずれかは、ソースコードを変更するか、(あなたが/GUIビルダー設定に行くことができるあなたのため自動的にクラスファイルを修正しますで2つのオプションをテストし、それらが何をしているかを参照してください)。

GUI デザイナを使用して作成したコンポーネントには、どのようにアクセスしますか?

GUIに対応するソースコードファイルにアクセスしてゲッターを追加することができます。あなたのコンポーネントに名前を付けるようにしてください...

0

あなたの結合クラスで自動的に生成された初期化コードは次のようになります。IntelliJのの初期化コードの詳細情報について

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

このJetBrainsのドキュメントを参照してください。Creating Form Initialization Code

関連する問題