Java实现图形界面计算器
1. 界面设计
首先,我们需要设计一个简单清晰的计算器界面。这里我们可以使用Java Swing来实现。在设计界面时,我们需要选择合适的布局管理器来放置按钮、文本框等组件,也需要考虑好每个组件的功能。一个常见的计算器界面通常包括数字键、运算符键、等号键和清除键等。在本次示例中,我们选择使用GridLayout布局管理器简单实现一个计算器界面:
import javax.swing.*;
import java.awt.*;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
JPanel panel = new JPanel(new GridLayout(4,4));
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(150, 50));
frame.getContentPane().add(textField, BorderLayout.NORTH);
JButton button1 = new JButton("1");
panel.add(button1);
//...添加其它按钮
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2. 实现计算功能
接下来,我们需要为计算器添加计算功能。一种实现方法是将每个用户的操作转化为字符串表达式,再调用Java提供的表达式解析库计算该表达式的值。另一种方法则是自己编写计算器的逻辑计算代码。这里我们选择使用自己编写计算器逻辑的方式。
在本次示例中,我们可以在每个按钮的响应函数中获取用户输入的数字和运算符,根据当前的状态进行计算,并在文本框中显示结果。具体实现如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
JPanel panel = new JPanel(new GridLayout(4,4));
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(150, 50));
frame.getContentPane().add(textField, BorderLayout.NORTH);
JButton button1 = new JButton("1");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
textField.setText(text + "1");
}
});
panel.add(button1);
//...添加其它按钮
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
3. 示例说明
下面我们来实现一个简单的加法运算,假设用户输入1、2两个数字,并点击“+”按钮,我们需要将它们相加并将结果显示在文本框中。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
JPanel panel = new JPanel(new GridLayout(4,4));
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(150, 50));
frame.getContentPane().add(textField, BorderLayout.NORTH);
JButton button1 = new JButton("1");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
textField.setText(text + "1");
}
});
panel.add(button1);
JButton button2 = new JButton("2");
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
textField.setText(text + "2");
}
});
panel.add(button2);
JButton buttonPlus = new JButton("+");
buttonPlus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
textField.setText(text + "+");
}
});
panel.add(buttonPlus);
JButton buttonEqual = new JButton("=");
buttonEqual.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
String[] parts = text.split("\\+");
int num1 = Integer.parseInt(parts[0]);
int num2 = Integer.parseInt(parts[1]);
int result = num1 + num2;
textField.setText(Integer.toString(result));
}
});
panel.add(buttonEqual);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
当用户输入1、2,点击“+”,再点击“=”时,文本框的内容将显示为3。这段示例代码可以作为对实现图形计算器的参考,读者可以自行扩展该代码,丰富计算器的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现图形界面计算器 - Python技术站