1

これらは私のコードです。テキストフィールドから行を読み取るときにラベルに問題がありました。ラベル「_」を追加して、プログラムが前にロードした単語のサイズと同じにすることができます。ラベルの作成に問題があります。問題を理解していただければ幸いです。解決策を教えてください。

 public class HangGame extends JFrame {

     JLabel lbl;
    JLabel word ;
    private  String[]myword = new String [20];
   Game() {

}
    void readfile () {
Properties prob = new Properties();

try{

    for(int x=0; x<n; x++){
    }
    }}
    private void initLabelPanel() {
    //craete array of labels the size of the word
        letterHolderPanel = new JPanel();
        int count =0;

//私のコードを実行すると、この配列に問題があります [myword.length()] コンパイラはそれを見つけることができません。

wordToFindLabels = new JLabel[myword.length()];
    //Initiate each labels text         add tp array and to letter holder panel
    for (int i = 0; ih; i++) {JLabel lbl = new JLabel("_");

    letterHolderPanel.add(lbl);
    lbl.setBounds();
    }
    }


}
4

2 に答える 2

2

mywordStringsは単一ではなくの配列であるため、次のStringように置き換える必要があります。

wordToFindLabels = new JLabel[myword.length()];

wordToFindLabels = new JLabel[myword.length];

mywordArray混乱を避けるために、変数の名前をたとえば に変更できます。

また、絶対配置 (null レイアウト) を使用するのではなく、レイアウト マネージャーを使用します。

参照:レイアウト マネージャーを使用しない場合 (絶対配置)

于 2012-11-13T23:09:57.177 に答える
1

長さはメソッドではなくプロパティであり、それに応じてコードを変更します

wordToFindLabels = new JLabel[myword.length];  

そして今、あなたのコードは



for (int i = 0; i < wordToFindLabels.length; i++) {
String labelValue="";
if(myword[i] != null) {
for (int j = 0; j < myword[i].length(); j++){
  labelValue+="_"
}
}
JLabel lbl = new JLabel(labelValue);
    wordToFindLabels[i] = lbl;

    letterHolderPanel.add(lbl);
    lbl.setBounds(30, 60, 20, 20);
    }

于 2012-11-13T23:10:10.820 に答える