第一种方式:
class myframe extends JFrame implements actionListerner{
.......
......
myButton.addActionListener(this);
}
这种形式中,参数this是啥?为什麽不是监听类的对象?在下面第二种方式中,不用implements也可以实现,那么在这里用了implement有什麽用呢?
第二种方式:
class myframe extends JFrame{
.......
......
myButton.addActionListener(new actionListerner{.....});
}
其中new actionListerner这一段,这个叫匿名类吧?
我是初学,以前只懂一点Javascript,现在学java,感觉它的事件响应方面的语法好难懂.
关于事件监听,如果还有其他什麽语法方式,请告诉我.
或者还有其他什麽值得注意的,也请告诉我.
[size=x-large][color=red]看了你问的问题,感觉你的JAVA基础还是很薄弱的.
首先,回答你第一个问题,在java中,有两个变量名,this and super,就像JS中也有这样的,this.在JS中JS指的是onclick所在的这个控件吧.而在Java中,this指的是当前对象.super指的示的是父类.
其次,你要明面JButton的addActionListener方法的参数是一个ActionListener接口类型的.这就是说任何继承ActionListener的类都可以做为参数传进来.
最后,那么在继承一个接口之后,JAVA语言规定,必须实现ActionListener的所有方法.那么你就根据ActionListener的定义,实现它的public void actionPerformed(ActionEvent e);方法.[/color][/size]下面是给出的代码(JDK1.5运行通过的):
这是你第一种方法实现.
[code="java"]
package com.Test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/*
creator: Tian Zhichao (chinoistzc@gmail.com)
*
/
public class MyFrame extends JFrame implements ActionListener {
JButton btn = new JButton("点我");
/*
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog((JButton)e.getSource(), "有效果!");
}
}
[/code]
这是你第二种方法实现:
[code="java"]package com.Test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/*
creator: Tian Zhichao (chinoistzc@gmail.com)
*
/
public class MyFrame extends JFrame {
JButton btn = new JButton("点我");
/*
2010-4-8,下午11:48:11
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame frm = new MyFrame();
frm.btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog((JButton)e.getSource(), "有效果!");
}});
frm.add(frm.btn);
frm.setSize(200, 400);
frm.setVisible(true);
}
}[/code]
[size=x-large][color=red]希望对你有所帮助[/color][/size]