忘れてしまいます。 Javaでは、あなたがしたいことをする方法がありません。囲まれたオブジェクト(new ActionListener()
)内では、の最終であるため、 の最終変数に囲みタイプからの変数を読み込み、変更することはできません。
のコード例は、以下の作品として(しかし、何よりも):ところで
final Boolean click = false;
send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println("outside variable 'click' is:" + click);
}
});
:それはあなたがやろうと、それは良いアイデアではありませんので、Javaが、それを許可していません何が良いアイデアではありません。 .. :-)
更新:それでもやりたいのなら、あなたはラッパークラスを作ることができます。
以下のコードは動作しますが、後で教えてください。非常に悪いことではありません。
public class MyClass {
public static void main(String[] args) {
JButton send = new JButton();
final BooleanWrapper click = new BooleanWrapper();
click.value = false;
send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
click.value = true;
}
});
send.getActionListeners()[0].actionPerformed(new ActionEvent(new MyClass(), 1, "very bad idea"));
if (click.value){
System.out.println("WORKS GOOD!!");
}
}
private static class BooleanWrapper
{
private Boolean value;
}
}
あなたはそれから来るどこのいずれかのコンテキストなしのコードを掲載しました。アクションリスナーはどこに定義されていますか?あなたは 'クリック 'の状態をどこで確認していますか?あなたがそれを投稿したやり方は、同じ方法ですべてをやっているように見えます。 – azurefrog
ユーザーがボタンをクリックするまでに 'if'ステートメントが既に処理されています。 –
@azurefrogこれはコードのほんの一部です – KeionBeats