2012-03-18 27 views
1

私はJavaとSwingには新しく、Windowbuilderを使っていくつかのGUIアイデアを試してみましたが、試してみると問題に遭遇しましたJlabelのテキストを設定します。Java Swing - 別のメソッドからJlabelテキストを設定する

Windowbuilderは自動的にそうようなpathLabel呼ばJLabelの、初期化中()メソッドのインスタンスを作成しました:私は、この初期化の中からpathLabel.setTextを(「ここにテキストを入力してください」)を使用する場合

private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 570, 393); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JLabel pathLabel = new JLabel("New label"); 
    pathLabel.setBounds(61, 296, 414, 15); 
    frame.getContentPane().add(pathLabel);} 

を()メソッドを呼び出すと、正常に動作しますが、テキストを完全に異なるメソッドから設定するにはどうすればよいですか?私はそれを参照させていません。

Visual StudioでC#でこの問題が発生したことはなく、私が選択した方法からラベルのテキストを設定できました。私は何が欠けていますか?

私はこれが意味をなさないことを願っており、何か助けに感謝します。ありがとう。

+3

スイングコードをビルドするためにコードジェネレータを使用しないもう一つの理由。これを手作業でコーディングする方法については、Swingチュートリアルを参照してください。 –

+0

'setBounds(..)'いいえ!レイアウト(パディングあり)とボーダーの使い方を学んでください! –

+2

*「Visual StudioでC#でこの問題が発生したことはありません」*そのようなことを書くことは人々に奨励する素晴らしい方法ではありません。異なる言語には、それぞれ異なる弱点と用途があります。 Javaはコンポーネントを確実にサイズ調整して配置するためのレイアウトが必要なx-plat言語です。レイアウトを使用するのは、コンポーネントを既知の/固定の場所にドラッグアンドドロップするほど簡単ではありません。 –

答えて

2

あなたのクラスのインスタンス変数としてpathLabelを入れて、中にすべてのメソッドを渡ってそれにアクセスすることができますクラス。

class GUIClass extends JFrame{ 
JLabel pathLabel; 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 570, 393); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    pathLabel = new JLabel("New label"); 
    pathLabel.setBounds(61, 296, 414, 15); 
    frame.getContentPane().add(pathLabel); 
} 
void func(){ 
    pathLabel.setText("enter text here"); 
} 
+0

優秀!私は今それを得る、ありがとう。 – Bagshot

2

すべてのクラスメソッドがアクセスできるように、あなたは周囲のクラスにpathLabelためのフィールドを作成することができます

class YourClass { 
    private JLabel pathLabel; 
    private void initialize() { 
     ... 
     // Note that there is no declaration for pathLabel inside initialize 
     // since it was already declared above, and the above 
     // declaration is a reference shared by all class methods 
     pathLabel = new JLabel("New label"); 
     ...} 
} 
関連する問題