我正在尝试使用以下代码制作一个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
?
答案 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类的当前实例实现。这意味着使用这行代码我们将ActionListener与按钮绑定,以便每当按钮发生特定事件时,其actionPerformed方法将被称为
答案 3 :(得分:0)
有时候一个方法需要引用调用它的对象。为此,Java定义了 此 关键字。 此 可以在任何方法中用于引用当前对象。也就是说, 此 始终是对调用该方法的对象的引用。您可以在允许对当前类类型的对象的引用的任何地方使用 this 。
在你的情况下这个指的是DrawTicTacToe类对象。 所以
button.addActionListener(this);
表示可以在此类中找到此ActionListener的操作 这是在DrawTicTacToe