2012-12-06 29 views
0

我想使用下面的代码制作一个tic tac toe板。我不明白“this”在下面的代码中做了什么

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

+1

你的问题:“为什么我不能用的actionPerformed取代呢?”没有意义。 “this”引用一个DrawTicTacToe对象,该对象实现了ActionListener接口,而“actionPerformed”是方法。 addActionListener将ActionListener的实例作为参数。 –

+0

当它已经评论它是一个确切的重复,那么为什么人们会回答这个问题。我们应该使用现有的资源。 –

+0

@Abhishekkumar这些人有一个名字:* karma秃鹰*。 –

回答

0

它注册您的DrawTicTacToe类的当前实例作为按钮的监听器。当按钮被点击时,你的actionPerformed方法将被调用。

0

“this”指的是由当前DrawTicTacToe类的实例实现的ActionListener接口。它意味着使用这一行代码,我们已经绑定了ActionListener和按钮,以便每当特定事件发生时按钮actionPerformed方法会被调用

+0

我明白,但actionPerformed方法被调用,以便它会绘制tic tac脚趾板?它是否必须完全命名为actionPerformed?我改了名字,并且出错了。我是一个新的... – user1837224

+0

actionPerformed方法由您的DrawTicTacToe类实现的ActionListener接口提供。我们从该接口重写此方法并给它自己的实现。因为ActionListener API已给您这个回调,所以您不能使用任何其他名称每次单击按钮时都会调用它,并使您可以自由地实现您想要点击的任何内容。 – passionate

+0

谢谢!我现在明白了 – user1837224

0

有时一个方法需要引用调用它的对象。为了实现这一点,Java定义的 关键字。 这个可以用在任何方法内引用当前对象。也就是,这个始终是对该方法被调用的对象的引用。您可以使用这个随时随地当前类的类型的对象的引用是允许的。

您的情况引用DrawTicTacToe类对象。 所以

button.addActionListener(this); 

意味着这个ActionListener的行动可以在发现这类 是在DrawTicTacToe

相关问题