来一份详细的“Java实现简单图形界面计算器”的攻略吧。
一、概述
本攻略将带领读者用Java实现一个简单的图形界面计算器。主要用到的技术是Swing,一个Java提供的GUI工具包。通过这个攻略,读者将了解到如何使用Swing快速完成一个图形界面程序的开发。
二、实现步骤
- 创建项目
首先,我们需要创建一个Java项目。可以使用Eclipse/IDEA等开发工具来创建项目,并添加Swing所需的库文件。
- 创建主界面
创建MainUI类,该类是GUI程序的主界面。界面中需要添加一个文本框用于显示计算结果,以及多个按钮用于用户输入。
public class MainUI extends JFrame {
private JPanel contentPane; // 界面的主容器
private JTextField resultField; // 显示计算结果的文本框
// 声明多个按钮组件
private JButton btn1, btn2, ... , btn0, btnPlus, btnMinus, btnMul, btnDiv, btnClear, btnEqual;
// 构造函数
public MainUI() {
// 设置界面标题
setTitle("计算器");
// 设置界面大小
setBounds(100, 100, 300, 400);
// 获取界面的主容器
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
// 初始化各个组件
resultField = new JTextField();
resultField.setHorizontalAlignment(SwingConstants.RIGHT);
resultField.setBounds(10, 10, 260, 40);
contentPane.add(resultField);
btn1 = new JButton("1");
btn1.setBounds(10, 60, 50, 50);
contentPane.add(btn1);
btn2 = new JButton("2");
btn2.setBounds(70, 60, 50, 50);
contentPane.add(btn2);
// ...省略部分代码
btnClear = new JButton("清空");
btnClear.setBounds(10, 250, 110, 50);
contentPane.add(btnClear);
btnEqual = new JButton("=");
btnEqual.setBounds(140, 250, 110, 50);
contentPane.add(btnEqual);
}
}
- 添加按钮事件
在实现按钮事件之前,先来了解一下Java中的事件机制。
Java中的事件机制主要有事件源、事件对象、事件监听器、事件处理等一系列概念。事件源是发生事件的对象,比如按钮、文本框等,事件对象是发生事件的信息,比如按钮按下、文本框内容改变等。事件监听器则是用于处理事件的接口,事件处理则是在事件发生后执行的代码。
public class MainUI extends JFrame {
// ... 省略部分代码
// 添加按钮事件监听
public void addButtonListeners() {
// 为数字按钮添加事件
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultField.setText(resultField.getText() + "1");
}
});
// ...省略部分代码
// 为“=”按钮添加事件
btnEqual.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String res = Calculator.calculate(resultField.getText());
resultField.setText(res);
}
});
// 为“清空”按钮添加事件
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultField.setText("");
}
});
}
}
在上面的代码中,我们使用了匿名类的方式来实现按钮事件监听器,可以让代码更加简洁易懂。
- 实现计算功能
接下来,我们来实现计算功能。为了让代码更加清晰易懂,我们将计算函数实现放在Calculator类中。
public class Calculator {
public static String calculate(String expression) {
String[] tokens = expression.split(" ");
Stack<Double> stack = new Stack<Double>();
for(String token : tokens) {
if(token.equals("+")) {
double b = stack.pop();
double a = stack.pop();
stack.push(a + b);
} else if(token.equals("-")) {
double b = stack.pop();
double a = stack.pop();
stack.push(a - b);
} else if(token.equals("*")) {
double b = stack.pop();
double a = stack.pop();
stack.push(a * b);
} else if(token.equals("/")) {
double b = stack.pop();
double a = stack.pop();
stack.push(a / b);
} else {
stack.push(Double.parseDouble(token));
}
}
return String.format("%.2f", stack.pop());
}
}
在上面的代码中,我们使用了栈(Stack)来处理表达式中的运算符和操作数。
- 运行程序
最后,我们只需要通过Main函数来创建主界面对象,并为按钮添加事件监听器,然后显示主界面即可。
public class Main {
public static void main(String[] args) {
MainUI frame = new MainUI();
frame.addButtonListeners();
frame.setVisible(true);
}
}
三、示例
下面我们将通过两个示例来演示这个计算器程序。
示例1
输入:2 + 3 * 4
可以看到,程序的输出结果为14.00,符合预期。
示例2
输入:( 2 + 3 ) * 4
这个表达式中有括号,但是我们的计算器程序并没有对括号进行处理。程序的输出结果为null,这明显是有问题的。因此,我们需要对程序进行修复,使其能够正确处理各种表达式。
四、总结
通过本攻略的介绍,我们了解到了如何使用Java中的Swing库快速实现一个简单的图形界面计算器,主要的步骤包括创建界面、添加按钮事件、实现计算功能等。同时,我们也引入了栈这个数据结构来处理表达式中的运算符和操作数。在实际应用中,我们可以根据这个示例程序来扩展实现更加复杂的计算器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现简单图形界面计算器 - Python技术站