一个接口的问题,前面是正确的程序,后米看是错误的程序。
1. 程序这样写是没问题的(button.addActionListener(this);)
public class t implements ActionListener{
JButton button,button_new;
public static void main (String arg[]){
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener(this);
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
button.setText("I've been clicked");
}
}
2. 但我修改一下就有问题了(button.addActionListener((ActionListener) this);)
public class t{
JButton button,button_new;
public static void main (String arg[]){
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener((ActionListener) this);
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
button.setText("I've been clicked");
}
}
1. 程序这样写是没问题的(button.addActionListener(this);)
public class t implements ActionListener{
JButton button,button_new;
public static void main (String arg[]){
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener(this);
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
button.setText("I've been clicked");
}
}
2. 但我修改一下就有问题了(button.addActionListener((ActionListener) this);)
public class t{
JButton button,button_new;
public static void main (String arg[]){
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener((ActionListener) this);
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
button.setText("I've been clicked");
}
}
你的前面的程序t implements ActionListener,所以是ActionListener接口的实现,所以可以啊。但是你后面的程序t和ActionListener没关系,你想强制把t转换成ActionListener,应该报Cast Exception吧?
JButton button,button_new;
public static void main (String arg[]){
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
System.out.println(1);
}
});
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
JButton button, button_new;
public static void main(String arg[]) {
t gui = new t();
gui.go();
}
private void go() {
JFrame f = new JFrame();
button = new JButton("click me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
button.setText("I've been clicked");
}
});
f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
public void addActionListener(ActionListener l) {
listenerList.add(ActionListener.class, l);
}
你第一次this 是实现了ActionListener 接口,所以传入this没错
完毕