このトピックについて既に質問がありますが、私はユーザがJTextField
に何かを入力したコードを書いています。ボタンをクリックした後、彼の言葉は彼の言葉が持っていた同じ文字数のアスタリスクの数に置き換えられました。例えば "テーブル"は "****" 。私はこのようにしました:ActionListenerから変数を送信し、別のActionListenerで使用できるようにする
ask.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String guess = "";
String given = textGive.getText();
for (int i=0; i<given.length(); i++){
String asterisk = "*";
guess += asterisk;
textGive.setText(guess);
}
}
});
私は素晴らしい方法でこれをしなかったことを知っていますが、私はそれをより良くする方法は分かりませんでした。どんな勧告?
これで、Stringと元の単語とアスタリスクの両方をスコープの外に保存して、別のActionListenerでその文字列にアクセスしてさらに変更することができます。 最初に書く前にActionListener
私はString guess = ""
とString given = ""
と書いていましたが、何もしなかったようです。 だから、私の二番目にActionListener
私は彼に文字列given
を送りたいと思っています。
は、私はさらにそれをアクセスもするために「囲みスコープで定義された特定の非finalのローカル変数を参照することができません」:
guess.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String attempt = textGuess.getText(); char att = attempt.charAt(0); for (int i=0; i<5; i++){ if (given.charAt(i)==att){ textGuess.setText("Ok!"); } } } });
は、Eclipseは言って私にエラーを与えます。
given
が最終にする必要があることを理解し、どのように変数が最初
ActionListener
からのテキスト入力に依存している場合があることを行うには?この問題の解決策がいくつかありますか?私は最近、Javaを使い始めたので、言語をあまりよく知らない。
は、フィールドだけではないローカル変数を使用します! –
最初に何を達成したいですか?あなたがここで説明していることは、いくつかのパスワードテキストフィールドなどをしたいと思うように私に聞こえるでしょうか? –
推奨されているのは、 'textGive.setText(guess);'行はforループの外側に置く必要があります。 –