1
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;

import javax.swing.*;
import java.awt.event.*;

public class CursorClass implements ActionListener{
        JButton btn;
        JFrame frame;

    public static void main(String[] args) {
        CursorClass cc = new CursorClass();
        cc.launchButton();
    }

    public void launchButton(){
        frame = new JFrame("Main Window");
        frame.setSize(400, 400);

        btn = new JButton("Close Main Window");
        btn.setSize(100,100);

        btn.addActionListener(this); // <-------- 

        JPanel pnl = new JPanel();
        pnl.add(btn);

        frame.add(pnl);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent event){
        System.out.print("Exiting..");
        System.exit(0);
    }
}

launchButtonメソッドでわかるように..btn.addActionListener(this)関数..

は何thisですか?を参照していますか?

全体を指していCursorClassますか?私はここで少し混乱しています。ボタンオブジェクトに何を渡したのか理解できません。私は ActionListener を追加したことを知っています..そして今、ボタン(イベントソース)はクリックされたときにボタンに応答しますがthis、そのメソッドを追加します..何が何でthisあるかを見ることができません..私はそれを知っています最も一般的な答えは、現在のオブジェクトなどを参照することです.しかし、もっと具体的なものが必要ですthis..これを書いた私のクラスはthis

4

5 に答える 5

3

あなたのCursorClass道具ActionListenerthisの現在のインスタンスを参照しますCursorClass。基本的に、コードはそれ自体(「この」オブジェクト) をアクション リスナーとして追加します。

のインスタンスを参照する理由は、 のメソッドであるCursorClassから呼び出されているためです。launchButtonCursorClass

于 2013-05-10T21:55:23.453 に答える
2

thisコードで実行されているように、ccそこで作成されたインスタンスを正確に参照します。

CursorClass cc = new CursorClass();

そのインスタンス化の後、次を呼び出します。

cc.launchButton();

したがって、あなたの例では、thisですcc

のメソッド シグネチャaddActionListenerpublic void addActionListener(ActionListener l)であるため、 のインスタンスを渡す必要がありActionListener、クラス定義でわかるように:

public class CursorClass implements ActionListener{

CursorClass は ActionListener を実装しているため、有効なクラスです。

ここで確認できるのは、通知メソッドが実装されたメソッドであるオブザーバー パターンです。public void actionPerformed(ActionEvent e){...}

于 2013-05-10T22:06:07.947 に答える
1

クラスのオブジェクトは と見なされますthis

CursorClass の 2 つのオブジェクト、A と B があるとします。

つまり、thisオブジェクト A はオブジェクト A を参照しthis、オブジェクト B はオブジェクト B を参照します。

于 2013-05-10T21:56:35.593 に答える
0

最も簡単な答えは、メソッド ( ) を呼び出した、このクラスのオブジェクト、またはこのクラスを拡張するクラスを参照しているということlaunchButton()です。

于 2013-05-11T01:24:11.957 に答える
0

はい、thisJava およびその他のオブジェクト指向言語では、現在のクラスを参照しています。

したがって、あなたの場合、これは ==CursorClassです。

于 2013-05-10T21:55:29.483 に答える