-
事件监听:当某个事情发生的时候,干什么
一、按钮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(""); } }