事件监听
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class jianting {
public static void main(String[] args) {
Frame frame = new Frame();
frame.pack();
Button button1 = new Button("start");
Button button2 = new Button("end");
//设置按钮信息,如果不设置,默认返回按钮名
button1.setActionCommand("123");
button2.setActionCommand("456");
frame.setLayout(new GridLayout(1,2));
frame.add(button1);
frame.add(button2);
Myaction myaction = new Myaction();
button1.addActionListener(myaction);
button2.addActionListener(myaction);
frame.setVisible(true);
frame.setBounds(10,10,200,200);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
//事件监听
class Myaction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了:msg"+e.getActionCommand());
//获取按钮信息
if (e.getActionCommand().equals("123"))
{
System.out.println("halilu");
}
else {
System.out.println("haliluya");
}
}
}
输入框事件监听
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Textfield {
public static void main(String[] args) {
//启动
MyFrame myFrame = new MyFrame();
}
}
class MyFrame extends Frame{
public MyFrame()
{
TextField textField = new TextField();
add(textField);
//监听这个文本框输入的文字
MyactionListener myactionListener = new MyactionListener();
textField.addActionListener(myactionListener);
pack();
setVisible(true);
textField.setEchoChar('*');
setSize(200,200);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
class MyactionListener implements ActionListener{//回车触发
@Override
public void actionPerformed(ActionEvent e) {
TextField field=(TextField) e.getSource();//获取文本框输入资源
System.out.println(field.getText());//输出获得的文本资源
field.setText("");//null 清空文本输入
//e.getSource();//获得一些资源
}
}
简易计算器的开发制作
oop原则:组合大于继承
什么是oop(面向对象编程):
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Calculator {
public static void main(String[] args) {
new Calcula();
}
}
//计算器类
class Calcula extends Frame
{
public Calcula()//构造函数
{
//3个文本框
TextField field1 = new TextField(10);//字符数
TextField field2 = new TextField(10);
TextField field3 = new TextField(20);
//按钮
Button button = new Button("=");
button.addActionListener(new MyCalcular(field1,field2,field3));
//标签 文字性描述
Label label = new Label("+");
//布局 流式布局
setLayout(new FlowLayout());
add(field1);
add(label);
add(field2);
add(button);
add(field3);
pack();
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//监听器类
class MyCalcular implements ActionListener{
private TextField field1,field2,field3;
public MyCalcular(TextField field1,TextField field2,TextField field3)//使用构造函数获取三个变量
{
this.field1=field1;
this.field2=field2;
this.field3=field3;
}
@Override
public void actionPerformed(ActionEvent e) {
//获得加数与被加数
//field1.getText();//本身是一个String类型,需要转换成Int类型
int n1=Integer.parseInt(field1.getText());
int n2=Integer.parseInt(field2.getText());
//将这个值进行加法运算后,放到第三个文本框
field3.setText(""+(n1+n2));
//删除前面两个数
field1.setText("");
field2.setText("");
}
}
优化程序设计:
组合:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Calculator {
public static void main(String[] args) {
new Calcula().LoadFrame();
}
}
//计算器类
class Calcula extends Frame
{
//属性
TextField field1,field2,field3;
//方法
public void LoadFrame()
{
//3个文本框
field1 = new TextField(10);//字符数
field2 = new TextField(10);
field3 = new TextField(20);
//按钮
Button button = new Button("=");
button.addActionListener(new MyCalcular(this));
//标签 文字性描述
Label label = new Label("+");
//布局 流式布局
setLayout(new FlowLayout());
add(field1);
add(label);
add(field2);
add(button);
add(field3);
pack();
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//监听器类
class MyCalcular implements ActionListener{
//获取计算器这个对象,在一个类中组合另外一个类
Calcula calcula=null;
public MyCalcular(Calcula calcula)
{
this.calcula=calcula;
}
@Override
public void actionPerformed(ActionEvent e) {
//获得加数与被加数
//field1.getText();//本身是一个String类型,需要转换成Int类型
int n1=Integer.parseInt(calcula.field1.getText());
int n2=Integer.parseInt(calcula.field2.getText());
//将这个值进行加法运算后,放到第三个文本框
calcula.field3.setText(""+(n1+n2));
//删除前面两个数
calcula.field1.setText("");
calcula.field2.setText("");
}
}
完全的面向对象(内部类——更好的包装)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Calculator {
public static void main(String[] args) {
new Calcula().LoadFrame();
}
}
//计算器类
class Calcula extends Frame
{
//属性
TextField field1,field2,field3;
//方法
public void LoadFrame()
{
//3个文本框
field1 = new TextField(10);//字符数
field2 = new TextField(10);
field3 = new TextField(20);
//按钮
Button button = new Button("=");
button.addActionListener(new MyCalcular());
//标签 文字性描述
Label label = new Label("+");
//布局 流式布局
setLayout(new FlowLayout());
add(field1);
add(label);
add(field2);
add(button);
add(field3);
pack();
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private class MyCalcular implements ActionListener{ //监听器类(内部类) 最大的好处就是可以最大限度的访问外部类的方法
@Override
public void actionPerformed(ActionEvent e) {
//获得加数与被加数
//field1.getText();//本身是一个String类型,需要转换成Int类型
int n1=Integer.parseInt(field1.getText());
int n2=Integer.parseInt(field2.getText());
//将这个值进行加法运算后,放到第三个文本框
field3.setText(""+(n1+n2));
//删除前面两个数
field1.setText("");
field2.setText("");
}
}
}