按钮和文本框事件监听

  • 事件监听:当某个事情发生的时候,干什么

一、按钮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("");
    }
}

你可能感兴趣的:(GUI编程,java,开发语言)