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