-
事件监听:当某个事情发生的时候,干什么
一、按钮Button监听
public class TestActionEvent {
public static void main(String[] args) {
//按下按钮,触发一些事件
Frame frame = new Frame();
//弹窗的监听事件
/* frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});*/
Button button = new Button();
//按钮的监听事件
//因为addActionListener 需要一个ActionListener,所以我们需要构造一个ActionListener
/*button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});*/
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
windowsClose(frame);//关闭窗口
frame.setVisible(true);
}
//关闭窗体的事件
private static void windowsClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//事件监听
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aaa");
}
}
-
多个按钮监听一个事件
public class TestActionTwo {
public static void main(String[] args) {
Frame frame = new Frame();
//两个按钮,实现同一个监听
//开始 停止
Button start = new Button("start");
Button stop = new Button("stop");
//可以显示的定义出发会返回的命令,如果不显示定义,则会走默认的值!
//可以多个按钮只写一个监听类
stop.setActionCommand("button2-stop");
MyMonitor myMonitor = new MyMonitor();
start.addActionListener(myMonitor);
stop.addActionListener(myMonitor);
frame.add(start,BorderLayout.NORTH);
frame.add(stop,BorderLayout.SOUTH);
frame.setVisible(true);
frame.pack();
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand();获取按钮的信息
System.out.println("msg =>"+ e.getActionCommand());
}
}
二、输入框TextField监听
public class TestText01 {
public static void main(String[] args) {
//启动
new MyFrame();
}
}
class MyFrame extends Frame{
public MyFrame(){
TextField textField = new TextField();
add(textField);
//监听这个文本框输入的文字
MyActionListener myActionListener = new MyActionListener();
//按下enter就会触发这个输入框的监听事件
textField.addActionListener(myActionListener);
//设置替换编码
textField.setEchoChar('*');
setVisible(true);
pack();
}
}
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField source = (TextField)e.getSource();//获得一些资源,返回到一个对象
System.out.println(source.getText()); //获得输入框的文本
source.setText("");
}
}
OOP原则:组合大于继承
三、计算机小Demo
public class TestCalc {
public static void main(String[] args) {
new Calculator();
}
}
//计算器类
class Calculator extends Frame{
public Calculator(){
//3个文本框
TextField textField1 = new TextField(10);//字符数
TextField textField2 = new TextField(10);//字符数
TextField textField3 = new TextField(10);//字符数
//1个按钮
Button button = new Button("=");
button.addActionListener(new MyCalculatorListener(textField1,textField2,textField3));
//1个标签
Label label = new Label("+");
//布局
setLayout(new FlowLayout());
add(textField1);
add(label);
add(textField2);
add(button);
add(textField3);
pack();
setVisible(true);
}
}
//监听器类
class MyCalculatorListener implements ActionListener{
//获取三个变量
public TextField num1,num2,num3;
public MyCalculatorListener(TextField num1,TextField num2,TextField num3){
this.num1=num1;
this.num2=num2;
this.num3=num3;
}
@Override
public void actionPerformed(ActionEvent e) {
//1.获得加数和被加数
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
//2.将这个值 + 法运算后放到第三个框
num3.setText(n1+n2+"");
//3.清除前两个框
num1.setText("");
num2.setText("");
}
}
-
改造:
//简易计算器
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//计算器类
class Calculator extends Frame{
//获取三个变量
public TextField num1,num2,num3;
public void loadFrame(){
//3个文本框
num1 = new TextField(10);//字符数
num2 = new TextField(10);//字符数
num3 = new TextField(10);//字符数
//1个按钮
Button button = new Button("=");
button.addActionListener(new MyCalculatorListener(this));
//1个标签
Label label = new Label("+");
//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
//监听器类
class MyCalculatorListener implements ActionListener{
Calculator calculator=null;
public MyCalculatorListener(Calculator calculator){
this.calculator =calculator;
}
@Override
public void actionPerformed(ActionEvent e) {
//1.获得加数和被加数
int n1 = Integer.parseInt(calculator.num1.getText());
int n2 = Integer.parseInt(calculator.num2.getText());
//2.将这个值 + 法运算后放到第三个框
calculator.num3.setText(n1+n2+"");
//3.清除前两个框
calculator.num1.setText("");
calculator.num2.setText("");
}
}