2

そのため、オブジェクトが少量(10個のJLabel)あり、ユーザーの入力に応じてテキストを変更したいと思います。

ラベルのイニシャライザーは次のようになります。

private JLabel j1 = new JLabel();
private JLabel j2 = new JLabel();
private JLabel j3 = new JLabel();
...etc

そして10に続きます。

毎回各変数名を書き込まずに、各JLabelのテキストを一括変更するにはどうすればよいですか?

以下のようなアイデアがありましたが、文字列から名前で変数にアクセスする方法がわかりません。

for(int x=1;x<=10;x++){
  String d = (String) x; //this isn't what d equals, it's example.
  String label = "j"+x;
  label.setText(d); //I know this won't work, but this is what I want to do
}

これをエラーなしで実行できる方法はありますか?

4

2 に答える 2

4

これは、配列を使用してJLabelオブジェクトを格納する絶好のチャンスです。

private JLabel[] labels = new JLabel[10];

for (int i=0; i<10; i++) {
    labels[i] = new JLabel();
}

/* ... */

for (int i=0; i<10; i++) {
    labels[i].setText("Hello from label " + i);
}
于 2012-05-17T01:25:01.923 に答える
3

JLabelのような配列としてを作成した場合JLabel j[10] = new JLabel[10]。次に、forループを使用して各インデックスのインスタンスを作成し、テキストも設定できます。

for(int x=0;x<10;x++){
  j[x] = new JLabel();
  String d = String.valueOf(x); 
  String label = "j"+x;
  j[x].setText(d);
}
于 2012-05-17T01:25:43.923 に答える