2

私は Java と Swing の初心者で、Windowbuilder を使用していくつかの GUI アイデアを試していますが、Jlabel のテキストを設定しようとすると問題が発生しました。

Windowbuilder は、次のように initialize() メソッドで、pathLabel と呼ばれる Jlabel のインスタンスを自動的に作成しました。

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);}

この initialize() メソッド内から pathLabel.setText("enter text here") を使用すると問題なく動作しますが、まったく別のメソッドからテキストを設定するにはどうすればよいでしょうか? 参照させてくれない。

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

これが理にかなっていることを願っています。どんな助けにも感謝します。ありがとう。

4

2 に答える 2

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");
        ...}   
}
于 2012-03-18T19:29:30.627 に答える
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");
}
于 2012-03-18T19:31:54.967 に答える