今天学了一下文本框和按钮,感觉创建文本框和按钮都不是问题,但要处理事件却是一件很麻烦的事情,比如有一个 “确定” 按钮,当我们单击这个确定按钮后会发生什么事情呢,不一定,我们需要重写写接口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("请输入数字");
}
}
}
效果如下: