1
blueButton.addActionListener(new blueButtonListner());

このコードを入力するとどうなりますか?

私が思うのは、Javaコンパイラーがというオブジェクトを作成し、blueButtonListner()それが(のパラメーター)への入力になるということですaddActionListener

私が推測したようにそれが正しければ、このコードも機能するはずです:

redButton.addActionListener(rr);
redButtonListener rr =new redButtonListener();

しかし、それはエラーを示しています。誰かが私にこれを説明できますか?

4

4 に答える 4

6

リスナーオブジェクトは、使用する前に宣言する必要があります。

redButtonListener rr = new redButtonListener();
redButton.addActionListener(rr);

あなたは正しいですblueButton.addActionListener(new blueButtonListner());。このステートメントは、すぐにに渡されるクラスのインスタンスを作成します。blueButtonListeneraddActionListener

于 2012-08-14T03:18:00.140 に答える
2

優先順位は問題です、それが作成されるまであなたは何かを持つことができません

redButton.addActionListener(rr); redButtonListener rr =new redButtonListener();

rrまだ定義されていないため、コンパイラはそれが何であるかを認識していません。

対照的に

blueButton.addActionListener(new blueButtonListner())

コンパイラは一時オブジェクトを作成し、それをaddActionListenerメソッドに渡します。

これでコードを修正できます

redButtonListener rr =new redButtonListener();
redButton.addActionListener(rr); 
于 2012-08-14T03:19:10.390 に答える
1

逆の方法でコードを試してください。

redButtonListener rr =new redButtonListener();

redButton.addActionListener(rr);
于 2012-08-14T03:18:15.070 に答える
1

リスナーを追加する前に、まずリスナーを作成する必要があります。次のことを試してください。

redButtonListener rr =new redButtonListener();
redButton.addActionListener(rr); 

エラーが発生することに注意してください。通常、エラーの内容を注意深く読むと、必要な答えが得られるはずです。この場合、rrが定義されていないことがわかります。これは、使用する時点ではまだ存在していないためです。

于 2012-08-14T03:18:52.607 に答える