目前学习到GUI,所以通过写了一个计算器的四则运算来加固知识点,虽然这只是一个简单的界面,但是覆盖的知识点还是挺多的。
下面就用代码实现吧
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Calculator {
private JFrame jFrame;//创建一个容器
private Container contentPane; //容器,一个表面的桌布
private JTextField field1,field2,field3;//创建文本框
private JComboBox jcb;//下拉框
private JLabel resultLabel;//创建运算=
private JButton jb1,jb2,jb3;//创建按钮
String [] strings= {"+","-","x","/"};
//构造方法初始化
public Calculator() {
jFrame=new JFrame("计算器");//初始化容器
//设置大小
jFrame.setSize(600,200);
//设置窗口在显示屏的位置
jFrame.setLocation(500, 300);
//固定边框
jFrame.setResizable(false);
//设置直接关闭直接退出程序
jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
//创建一个获取三原色的类
Color c=new Color(200,199,100);
//初始化桌布容器
contentPane=jFrame.getContentPane(); //获取相应的桌布对象
//将背景颜色添加到桌布容器中
contentPane.setBackground(c);
//设置流式布局
jFrame.setLayout(new FlowLayout());
init();
}
//初始化方法
public void init() {
//1:初始化相应的组件
field1=new JTextField(10);
field2=new JTextField(10);
field3=new JTextField(10);
//初始化下拉框组件
jcb=new JComboBox(strings);
//初始化运算组件
resultLabel=new JLabel("=");
//初始化按钮组件
jb1=new JButton("计算");
jb2=new JButton("清空");
jb3=new JButton("退出");
//2:对各个组件进行字体,大小,加粗处理
Font font=new Font("微软雅黑",Font.BOLD,15);
//3:将这字体运用到各个组件中
field1.setFont(font);
field2.setFont(font);
field3.setFont(font);
jcb.setFont(font);
resultLabel.setFont(font);
jb1.setFont(font);
jb2.setFont(font);
jb3.setFont(font);
//4:将对应的组件添加到容器中
contentPane.add(field1);
contentPane.add(jcb);
contentPane.add(field2);
contentPane.add(resultLabel);
contentPane.add(field3);
contentPane.add(jb1);
contentPane.add(jb2);
contentPane.add(jb3);
//设置结果文本框不可编辑
field3.setEditable(false);
//设置输入为右边输入
field1.setHorizontalAlignment(JTextField.RIGHT);
field2.setHorizontalAlignment(JTextField.RIGHT);
field3.setHorizontalAlignment(JTextField.RIGHT);
//5:设置事件监听
//计算监听事件
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s1 = field1.getText().trim();//获取文本内容,去空格
String s2 = field2.getText().trim();
if (s1.equals("")||s2.equals("")) {
//提示框
JOptionPane.showMessageDialog(null, "請輸入非空數據");
return;
}
//将文本内容转换为整型
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
//返回当前所选项,就是返回你选择的运算符
String str1 = (String) jcb.getSelectedItem();
//进行运算符判断,并进行相应的运算
if (str1.equals("+")) {
int num=i1+i2;
field3.setText(num+"");
}else if (str1.equals("-")) {
int num=i1-i2;
field3.setText(num+"");
}else if (str1.equals("x")) {
int num=i1*i2;
field3.setText(num+"");
}else if (str1.equals("/")) {
//当为除时,除数是不能为零的,所以进行相应的判断
if (i2==0) {
JOptionPane.showMessageDialog(null, "除数不能为0");
return;
}
int num=i1/i2;
field3.setText(num+"");
}
}
});
//添加清空事件
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
field1.setText("");
field2.setText("");
field3.setText("");
}
});
//添加退出事件
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
//启动窗口的方法
public void go() {
//显示窗口可见
jFrame.setVisible(true);
}
public static void main(String[] args) {
new Calculator().go();
}
}
运行程序就会得到下面的界面
这里主要就是有两个注意的地方
1:就是运算符的下拉框的获取,要进行相应的运算我们得先知道是怎样运算,在运算事件中你要获取相应的运算符号,然后再进行相应的符号比较,就可以进行运算了。
2:获取的运算符号为 / 时我们就得进行判断了,因为在进行除运算时除数是不能为0的,当为0时给出一个弹窗,同时用return返回,不为0时就可以正常的运算。