“this”在以下代码中做了什么

时间:2012-12-06 17:56:05

标签: java this

我正在尝试使用以下代码制作一个tic tac toe board。我不明白是什么

button.addActionListener(本);

正在做和为什么this在那里使用。

package guicollection;

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

public class DrawTicTacToe extends GUIcollection
        implements ActionListener {

    private JButton button;
    private JPanel pane1;

    void drawTicTacToe() {

        DrawTicTacToe frame = new DrawTicTacToe();
        frame.setSize(400, 300);
        frame.createGUI();
        frame.setVisible(true);
    }

    private void createGUI() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        Container window = getContentPane();
        window.setLayout(new FlowLayout());

        pane1 = new JPanel();

        pane1.setPreferredSize(new Dimension(300, 200));
        pane1.setBackground(Color.yellow);
        window.add(pane1);

        button = new JButton("Prss me");
        window.add(button);
        **button.addActionListener(this);**

    }

    public void actionPerformed(ActionEvent event) {
        Graphics paper = pane1.getGraphics();
        paper.drawLine(90, 30, 90, 120);
        paper.drawLine(135, 30, 135, 120);
        paper.drawLine(60, 60, 165, 60);
        paper.drawLine(60, 90, 165, 90);


    }

}

为什么我不能用actionPerformed替换this

4 个答案:

答案 0 :(得分:0)

http://www.java2s.com/Code/JavaAPI/javax.swing/JButtonaddActionListenerActionListeneract.htm

在提出问题之前,请务必阅读文档。

JButton.addActionListener(ActionListener act)需要一个ActionListener类型的参数,actionPerformed是一个方法集合,它不是正确的类型。 this是当前对象,其类型为DrawTicTacToe,GUIcolletion和ActionListener(可能还有一些,具体取决于它们的超类)。

答案 1 :(得分:0)

它将DrawTicTacToe类的当前实例注册为该按钮的监听器。单击该按钮时,将调用actionPerformed方法。

答案 2 :(得分:0)

“this”这里指的是ActionListener接口,它由DrawTicTacToe类的当前实例实现。这意味着使用这行代码我们将A​​ctionListener与按钮绑定,以便每当按钮发生特定事件时,其actionPerformed方法将被称为

答案 3 :(得分:0)

有时候一个方法需要引用调用它的对象。为此,Java定义了       关键字。 可以在任何方法中用于引用当前对象。也就是说, 始终是对调用该方法的对象的引用。您可以在允许对当前类类型的对象的引用的任何地方使用 this

在你的情况下这个指的是DrawTicTacToe类对象。 所以

 button.addActionListener(this);

表示可以在类中找到此ActionListener的操作 这是在DrawTicTacToe