首页 > 代码库 > GUI编程第三弹_按钮上的ActionEvent事件

GUI编程第三弹_按钮上的ActionEvent事件

今天学了一下文本框和按钮,感觉创建文本框和按钮都不是问题,但要处理事件却是一件很麻烦的事情,比如有一个 “确定” 按钮,当我们单击这个确定按钮后会发生什么事情呢,不一定,我们需要重写写接口ActionListener的方法,本来想着做一个简易计算器,一开始觉着很简单,但仔细一想貌似不是很容易,一个计算器至少需要 10个数字按钮,外加 一些运算法则的按钮,当触发这些按钮后,每一个按钮后需要写的东西有很多,想想我就醉了。。于是果断决定,还是先撸出来一个a+b再说吧。。

文本框


JComponent 的子类 JTextField 负责创建文本框;


按钮


JComponent 的子类 JButton 负责创建按钮;


请自行熟悉一下这两个类。


a+b 源码:

主类

public class Event {
	public static void main(String[] args){
		Wgame w=new Wgame();
		w.setTitle("super a+b");
	}
}

重写JFrame,即构建窗口;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Wgame extends JFrame{
	JTextField input1,input2;
	JTextField output;
	JButton result;
	ListenResult ls;
	public Wgame(){
		init();
		setBounds(20,30,300,300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	void init(){
		setLayout(new FlowLayout());//设置组件流式布局
		input1=new JTextField(20);
		input2=new JTextField(20);
		output=new JTextField(20);
		add(input1);
		add(input2);
		result=new JButton("获得两数之和");
		add(result);
	    output.setEditable(false);
		add(output);
		ls=new ListenResult();
		result.addActionListener(ls);
		ls.setA(input1);
		ls.setB(input2);
		ls.setOutput(output);
	}
}

按钮的监听器:

import java.awt.event.*;
import javax.swing.*;
import java.math.*;
public class ListenResult implements ActionListener{
	JTextField a,b,c;
	public void setA(JTextField t){
		a=t;
	}
	public void setB(JTextField t){
		b=t;
	}
	public void setOutput(JTextField t){
		c=t;
	}
	public void actionPerformed(ActionEvent e){
		BigInteger ta,tb;
		try{
			ta=new BigInteger(a.getText());
			tb=new BigInteger(b.getText());
			c.setText(ta.add(tb).toString());
		}
		catch(Exception ee){
			c.setText("请输入数字");
		}
	}
}

效果如下:

                                                          


GUI编程第三弹_按钮上的ActionEvent事件