addMouseListener(this) 中用this出错,怎么回事

import java.awt.*;
import java.applet.*;
import java.awt.event.* ;

public class Pintu extends Applet
{
public void init()
{

//添加鼠标监听事件
addMouseListener(this);
addMouseMotionListener(this);
}

public static void main(String args[]){
Pintu pintu=new Pintu();
}
}

第1个回答  推荐于2018-04-19
你的this(Pintu )就没有这个接口,当然会出错了~方法就是前2个说的,要么new addMouseListener,要么implements MouseLIstener。本回答被网友采纳
第2个回答  2012-12-03
应该是你的类没有继承MouseListener接口
不过更好的办法是用匿名内部类
addMouseListener(new addMouseListener
{
}
)
这样写最好追问

能不能不这样写,有其他解决方法没?你这样是把监听的内容都放到大括号里面吗?

追答

addMouseListener(this);
addMouseMotionListener(this);
你这里要注册两个监听 必须用这种方法
用this这种只能注册一个监听
大括号里还有一个方法需要实现 把监听内容写在那个方法里就行了...
这个比较复杂了...你可以去百度 匿名内部类注册监听事件.

第3个回答  2012-12-03
你是不是没有实现接口呢,如果想用this的话,你要在类名后implements MouseLIstener。追问

加在
public class Pintu extends Applet

后面吗?加哪

追答

给你个参考!import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Example10_10{
public static void main(String args[]){
EditWindow win=new EditWindow("窗口");
}
}
class EditWindow extends JFrame implements ActionListener{
JMenuBar menubar;
JMenu menu;
JSplitPane splitPane;
JMenuItem itemCopy,itemCut,itemPaste;
JTextArea text1,text2;
EditWindow(String s){
setTitle(s);
setSize(260,270);
setLocation(120,120);
setVisible(true);
menubar=new JMenuBar();
menu=new JMenu("编辑");
itemCopy=new JMenuItem("复制");
itemCut=new JMenuItem("剪切");
itemPaste=new JMenuItem("粘贴");
menu.add(itemCopy);
menu.add(itemCut);
menu.add(itemPaste);
menubar.add(menu);
setJMenuBar(menubar);
text1=new JTextArea();
text2=new JTextArea();
splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,text1,text2);
splitPane.setDividerLocation(120);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
add(splitPane,BorderLayout.CENTER);
validate();
itemCopy.addActionListener(this);
itemCut.addActionListener(this);
itemPaste.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==itemCopy)
text1.copy();
else if(e.getSource()==itemCut)
text1.cut();
else if(e.getSource()==itemPaste)
text2.paste();
}
}