事件监听
package com.guoguo.lesson2;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Testaction02 {
public static void main(String[] args) {
//俩个按钮实现同一个监听
// 开始 停止
Frame frame = new Frame("开始-停止");
Button button1 = new Button("START");
Button button2 = new Button("STOP");
//可以显示的定义出发会返回的命令,如果不显示定义,则会走默认的值
//可以多个按钮只写一个监听类
button2.setActionCommand("buton2-stop");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand()获得按钮的信息
System.out.println("按钮被点击了:msg=》"+e.getActionCommand());
}
}
按钮被点了:msg=》START
按钮被点了:msg=》buton2-stop
输入框TEXTFIELD
package com.guoguo.lesson2;
import javax.xml.stream.FactoryConfigurationError;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestTest01 {
public static void main(String[] args) {
//启动
MyFrame myFrame = new MyFrame();
}
}
class MyFrame extends Frame{
public MyFrame(){
TextField textField = new TextField();//单行
add(textField);
Myactionlistener2 myactionlistener2 = new Myactionlistener2();
//监听这个文本框输入的文字
//按下enter就会出发这个输入框的事件
textField.addActionListener(myactionlistener2);
//设置替换编码
textField.setEchoChar('*');
pack();
setVisible(true);
}
}
class Myactionlistener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField field =(TextField) e.getSource();//获得一些资源,返回一个对象
System.out.println(field.getText());//获得输入框中的文本
field.setText("");
}
}
简易计算器,组合+内部类回顾
oop原则:组合,大于继承
class A extends B{
继承
}
class A{
public B b;
}
package com.guoguo.lesson2;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//简易计算器
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//计算器类
class Calculator extends Frame{
//Alt insert
public Calculator() {
//需要三个文本框,一个按钮,一个标签
TextField num1 = new TextField(10);
TextField num2 = new TextField(10);
TextField num3 = new TextField(13);//字符数
Button button = new Button("=");
button.addActionListener(new MyCalculatorListener(num1,num2,num3));
Label label = new Label("+");
//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
//监听器类
//内部类最大的好处就是可以畅通无阻的访问外部的属性和方法
class MyCalculatorListener implements ActionListener{
//获取三个变量
private 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) {
//获得加数和被加数
int n1=Integer.parseInt(num1.getText());//STRING转换成int
int n2=Integer.parseInt(num2.getText());//STRING转换成int
//int n3=Integer.parseInt(num3.getText());//STRING转换成int
//将+法运算后,放到第三个框
num3.setText(""+(n1+n2));
//清除前俩个框
num1.setText("");
num2.setText("");
}
}
优化,完全改成面向对象
package com.guoguo.lesson2;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//简易计算器
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//计算器类 属性 方法
class Calculator extends Frame{
//属性
TextField num1,num2,num3;
//方法
public void loadFrame(){
}
//Alt insert
public Calculator() {
//需要三个文本框,一个按钮,一个标签
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(13);//字符数
Button button = new Button("=");
button.addActionListener(new MyCalculatorListener(this));
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) {
//获得加数和被加数
int n1=Integer.parseInt(calculator.num1.getText());//STRING转换成int
int n2=Integer.parseInt(calculator.num2.getText());//STRING转换成int
//int n3=Integer.parseInt(num3.getText());//STRING转换成int
//将+法运算后,放到第三个框
calculator.num3.setText(""+(n1+n2));
//清除前俩个框
calculator.num1.setText("");
calculator.num2.setText("");
}
//注意点:面向对象基础打牢