最后一次更新于2019/07/08
效果演示图
功能与流程
要制作一个简易计算器,首先你要清楚GUI里要显示什么:
结果显示框
0~9的数字
删除功能
清楚功能
搜寻历史记录功能
计算结果的功能
括号优先计算功能
接下来通过流程图简单介绍一下思路:
GUI 源码
以下代码是根据我的设计来编写的
/**
* @author Hephaest
* @since 2018/04/19
* JDK 1.6
*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
/**
* Calculator类用来创造GUI
*/
public class Calculator extends JFrame
{
//新建文本框
JTextField text = new JTextField();
// set up row 2
JPanel row2 = new JPanel();
//创建按钮们
String[][] buttons = { {"7","8","9","DEL","AC"},{"4","5","6","×","÷"},{"1","2","3","+","-"},{"0","(",")","Replay","="}};
JButton[][]button = new JButton[4][5];
/**
* 这个计算机的界面我模拟的是卡西欧fx-82ES PLUS A
* 但是仅有其中的部分功能
*/
public Calculator()
{
super("CASIO");
setSize(400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
//设置文本框的尺寸、位置以及禁止键盘输入
text.setPreferredSize(new Dimension(30, 40));
text.setHorizontalAlignment(SwingConstants.TRAILING);
text.setEditable(false);
getContentPane().add(text, BorderLayout.NORTH);
//声明每一个按钮代表的意义
add(row2, BorderLayout.CENTER);
GridLayout layout2 = new GridLayout(4,5,5,5);
row2.setLayout(layout2);
for(int i = 0; i < buttons.length; i++)
{
for(int j = 0; j < buttons[0].length; j++)
{
button[i][j] = new JButton(buttons[i][j]);
row2.add(button[i][j]);
}
}
add(row2);
setResizable(false);
setVisible(true);
}
private static void setLookAndFeel()
{
//这条使跨操作系统也能看到计算机的GUI
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
// ignore error
}
}
public static void main(String[] args)
{