这是一个简易的计算机,只能计算加减乘除。
11.28更新,新增清除及获得光标功能。
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
public class GUI1 {
public static void main(String[] args){
Frame f=new Frame("简单计算机");
f.setBounds(400, 200, 400, 300);
f.setLayout(new FlowLayout());
Label label1=new Label("第一个数字 ");
Label label2=new Label("第二个数字 ");
Label label3=new Label(" 结果 ");
Label label4=new Label("=");
TextField tf1=new TextField(10);
TextField tf2=new TextField(10);
TextField tf3=new TextField(11);
Button bu=new Button("计算");
Button bu1=new Button("清除");
String[] symbol= {"+","-","*","/"};
JComboBox<String> cbx=new JComboBox<String>();
for(int i=0;i<4;i++) {
cbx.addItem(symbol[i]);
}
f.add(label1);
f.add(label2);
f.add(label3);
f.add(tf1);
f.add(cbx);
f.add(tf2);
f.add(label4);
f.add(tf3);
f.add(bu);
f.add(bu1);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
bu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//对动作按钮进行事件监听
//获取第一个操作数、
String firstnumbers=tf1.getText().trim();//让第一个操作数变量去得到他相应文本框中的内容并赋给一个string变量
//trim为去
//获取运算符、
String selectoperaters =cbx.getSelectedItem().toString();//令选择操作变量得到选择的Item,此方法得到的是Object类型需要转换为string类型所以要加tostring方法
//后赋值给一个String型的变量让其接收
String secondnumbers = tf2.getText().trim();
//字符串不能做运算将字符串数据转化为整数
//获第二个操作数
//数据校验,必须是数字字符串,可用正则表达式实现
String regex="\\d+";//正则表达式,字符串表示必须是数字
//校验第一个数
if(!firstnumbers.matches(regex)||!secondnumbers.matches(regex)) {
//做弹框来提示
JOptionPane.showMessageDialog(f,"必须输入数字");
return;//当数据不匹配时就不会往下跑了,返回
}
int firstnumber=Integer.parseInt(firstnumbers);
int secondnumber=Integer.parseInt(secondnumbers);
//定义变量接收结果
int resultnumber1=0;
if(selectoperaters=="/"&&secondnumber==0) {
tf3.setText("error,不能除于0");
}
else {
switch(selectoperaters){
case"+":
resultnumber1=firstnumber+secondnumber;
break;
case"-":
resultnumber1=firstnumber-secondnumber;
break;
case"*":
resultnumber1=firstnumber*secondnumber;
break;
case"/":
resultnumber1=firstnumber/secondnumber;
break;
}
//把结果赋值给结果框
String resultnumbers=Integer.toString(resultnumber1);
tf3.setText(resultnumbers);
}
}
});
bu1.addActionListener(new ActionListener() {
@Override//清空文本框
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf1.requestFocus();//文本框获取光标
}
});
f.setVisible(true);
}
}
正常情况下运行界面如下
当输入的不是数字时
当输入的除数为0时
该程序使用了下拉列表,布局方面仍待改善。