私はずっと探していましたが、この問題を解決できる人を見つけることができません。私はゲームを作っていますが、そのゲームには編集可能なコントロールがあります。コントロール ウィンドウは別の JFrame であり、確認ボタンをクリックすると、(コントロールを保持している) JTextFields 内の項目がファイルに書き込まれます。しかし、それは機能していなかったので、代わりに値を保持する配列リストを出力しました。コードは次のとおりです。
public void writeControls() {
ArrayList<String> al = new ArrayList<String>();
al.add(up.getText());
al.add(down.getText());
al.add(left.getText());
al.add(right.getText());
al.add(jump.getText());
al.add(duck.getText());
al.add(attack.getText());
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
System.exit(0);
}
問題は次のとおりです。最終的な JTextFieldattack
またはその他のものを変更して送信をクリックすると、システムはデフォルトのコントロールを出力します。たとえば、JTextField の値が w、a、s、d、r、t、q の場合、値 q を i に変更すると、q が出力されます。私は何を間違っていますか?前もって感謝します!
編集1:
テキストフィールドのコードであり、これFILES....
は単に別のクラスに格納された文字列です。クラスsetText()
はテキストフィールドの下にあります。
up = new JTextField(setText(FILES.controlsFileFinalDir, 1));
down = new JTextField(setText(FILES.controlsFileFinalDir, 2));
left = new JTextField(setText(FILES.controlsFileFinalDir, 3));
right = new JTextField(setText(FILES.controlsFileFinalDir, 4));
jump = new JTextField(setText(FILES.controlsFileFinalDir, 5));
duck = new JTextField(setText(FILES.controlsFileFinalDir, 6));
attack = new JTextField(setText(FILES.controlsFileFinalDir, 7));
public String setText(String fileDir, int lineNum) {
String txt = "";
txt = io.readSpecificLine(fileDir, lineNum);
txt = switchCase(txt);
return txt;
}
switchcase()
これらが値を取得しているテキストファイルに書き込んだものだけを取得し、それらを翻訳します。そのため、値が 0 の場合、スペースなどに変換されio.readSpecificLine();
ます。ファイルからテキスト行を取得するだけです。これは役に立ちますか?
EDIT 2:
私はただ遊んでいてsetText("");
、使用して JTextField テキストを設定すると、getText();
それが機能することがわかりました。問題は、手動で変更して getText(); を使用するときです。それはうまくいきません。なんで?