//声明:部分内容引自《Java编程思想(第四版)》机械工业出版社
对每个监听器类只使用一个实例的时候,把 ActionListener 实现成匿名内部类会更方便。
例:
// Button2b.java
// Using anonymous inner classes.
package net.mindview.util;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static net.mindview.util.SwingConsole.run;
/**
* Created by JT on 2016/7/2.
*/
public class Button2b extends JFrame {
private JButton
b1 = new JButton("Button 1"),
b2 = new JButton("Button 2");
private JTextField txt = new JTextField(10);
private ActionListener bl = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = ((JButton) e.getSource()).getText();
txt.setText(name);
}
};
public Button2b(){
b1.addActionListener(bl);
b2.addActionListener(bl);
setLayout(new FlowLayout());
add(b1);
add(b2);
add(txt);
}
public static void main(String[] args) {
run(new Button2b(), 200, 150);
}
}
练习5
使用 SwingConsole 类编写一个应用程序,它包括一个文本域和三个按钮,单击每个按钮的时候,在文本域中显示不同的文字。
package net.mindview.util;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static net.mindview.util.SwingConsole.*;
/**
* Created by JT on 2016/7/2.
*/
public class practice_5 extends JFrame {
private JButton
b1 = new JButton("hello"),
b2 = new JButton("byebye"),
b3 = new JButton("thanks");
private JTextField txt = new JTextField(10);
private ActionListener actlis = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
String s = ((JButton)e.getSource()).getText();
txt.setText(s);
}
};
public practice_5(){
b1.addActionListener(actlis);
b2.addActionListener(actlis);
b3.addActionListener(actlis);
setLayout(new FlowLayout());
add(b1);
add(b2);
add(b3);
add(txt);
}
public static void main(String[] args){
run(new practice_5(),200,300);
}
}