1

私は基本的に図書館から本をチェックアウトし、Java の学習を開始しました。私は自分のゴルフ リーグ用に小さなスコア計算機をコーディングしようとしていますが、このサイトは非常に役に立ちました。ここにいてくれてありがとう!

今質問に:

NetBeans GUI で作成された、jLabel_Hole1、jLabel_Hole2 などの名前の 9 つのラベルがあります。

ユーザーがフロント ナインを再生するラジオ オプションを選択した場合、これらのラベルの番号は 1 ~ 9 であり、それを「バック ナイン」に変更すると、10 ~ 18 と表示されるはずです。選択の変更ですが、もっとエレガントな方法があるかどうかを知りたいと思っていました。

試して切り捨てたいコードは次のとおりです。

       TGL.jLbl_Hole1.setText("10");
       TGL.jLbl_Hole2.setText("11");
       TGL.jLbl_Hole3.setText("12");
       TGL.jLbl_Hole4.setText("13");
       TGL.jLbl_Hole5.setText("14");
       TGL.jLbl_Hole6.setText("15");
       TGL.jLbl_Hole7.setText("16");
       TGL.jLbl_Hole8.setText("17");
       TGL.jLbl_Hole9.setText("18");

String が不変であることについていくつか読んだことがありますが、それは単なる制限である可能性がありますが、方法が必要であり、想像することはできません。

ありがとう。

4

2 に答える 2

2

基本的に、穴ごとに個別のラベルを作成するのではなく、配列内の各要素が個々の穴を表すラベルの配列を作成する必要があります。

代わりに...

TGL.jLbl_Hole1.setText("10");
TGL.jLbl_Hole2.setText("11");
TGL.jLbl_Hole3.setText("12");
TGL.jLbl_Hole4.setText("13");
TGL.jLbl_Hole5.setText("14");
TGL.jLbl_Hole6.setText("15");
TGL.jLbl_Hole7.setText("16");
TGL.jLbl_Hole8.setText("17");
TGL.jLbl_Hole9.setText("18");

あなたが持っているだろう...

for (JLabel label : TGL.holeLables) {
    lable.setText(...);
}

より良い解決策は、ラベルを開発者から隠し、単にセッターを提供することです...

TGL.setHoleText(hole, text); // hole is int and text is String

クラスの内部では、TGL2 つの選択肢があります...

Netbeans でフォーム エディターを使用したことがある場合は、Netbeans が作成するコンポーネントを独自の配列に配置する必要があります...

private JLabel[] holes;
//...//
// Some where after initComponents is called...
holes = new JLabel[9];
holes[0] = jLbl_Hole1;
// There other 8 holes...

次に、値を更新または返すことができるセッターおよびゲッターメソッドを提供するだけです...

public void setHole(int hole, String text) {
    if (hole >= 0 && hole < holes.length) {
        holes[hole].setText(text);
    }
}

public String getHole() {
    String text = null;
    if (hole >= 0 && hole < holes.length) {
        text = holes[hole].getText();
    }
    return text;
}

詳細については、配列チュートリアルを詳しく見てください...

于 2013-06-08T01:32:08.227 に答える