实现一个简单的计算器,前面是一个文本框(操作数1),后面是标签(操作符),再后面是一个文本框(操作数2),然后是一个"="按钮(JButton),最后是一个文本框(结果) (1)实现按钮ActionEvent事件的处理,点击等号获取计算结果,并显示在最后一个文本框; (2)实现第二个文本框的ActionEvent事件处理,在第二个文本框按回车,直接获得计算结果,并显示在最后一个文本框。(事件源为第二个文本框) (3)实现运算符标签的MouseEvent事件的处理,点击标签,可以更换标签的运算符,比如:将加号改成减号,从而实现减法功能,点击等号按钮,实现减法运算,并将结果显示在第三个文本框中。(具体实现:实现mouseClicked()时,判断鼠标单击次数是否为除4余0、余1、余2、余3,比如余为1,则将运算符标签上的字符修改为”-”,从而实现减法运算)
时间: 2024-02-22 07:59:37 浏览: 23
好的,我会尽力回答您的问题,以下是实现计算器的代码:
```
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Calculator extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField tfNum1;
private JTextField tfNum2;
private JTextField tfResult;
private JLabel lblOperator;
private String operator = "+";
public Calculator() {
setTitle("Calculator");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
tfNum1 = new JTextField(10);
tfNum1.setFont(new Font("Arial", Font.PLAIN, 20));
panel1.add(tfNum1);
lblOperator = new JLabel(operator);
lblOperator.setFont(new Font("Arial", Font.PLAIN, 20));
lblOperator.setForeground(Color.BLUE);
lblOperator.setHorizontalAlignment(SwingConstants.CENTER);
lblOperator.setVerticalAlignment(SwingConstants.CENTER);
lblOperator.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() % 4 == 1) {
operator = "+";
} else if (e.getClickCount() % 4 == 2) {
operator = "-";
} else if (e.getClickCount() % 4 == 3) {
operator = "*";
} else if (e.getClickCount() % 4 == 0) {
operator = "/";
}
lblOperator.setText(operator);
}
});
panel1.add(lblOperator);
tfNum2 = new JTextField(10);
tfNum2.setFont(new Font("Arial", Font.PLAIN, 20));
tfNum2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
calculate();
}
});
panel1.add(tfNum2);
JButton btnEqual = new JButton("=");
btnEqual.setPreferredSize(new Dimension(50, 50));
btnEqual.setFont(new Font("Arial", Font.PLAIN, 20));
btnEqual.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
calculate();
}
});
panel1.add(btnEqual);
JPanel panel2 = new JPanel(new GridLayout(1, 2));
panel2.setPreferredSize(new Dimension(400, 50));
JLabel lblResult = new JLabel("Result:");
lblResult.setFont(new Font("Arial", Font.PLAIN, 20));
lblResult.setHorizontalAlignment(SwingConstants.CENTER);
lblResult.setVerticalAlignment(SwingConstants.CENTER);
panel2.add(lblResult);
tfResult = new JTextField(10);
tfResult.setFont(new Font("Arial", Font.PLAIN, 20));
tfResult.setEditable(false);
tfResult.setHorizontalAlignment(SwingConstants.CENTER);
tfResult.setVerticalAlignment(SwingConstants.CENTER);
panel2.add(tfResult);
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
setLocationRelativeTo(null);
setVisible(true);
}
private void calculate() {
double num1 = Double.parseDouble(tfNum1.getText());
double num2 = Double.parseDouble(tfNum2.getText());
double result = 0.0;
if (operator.equals("+")) {
result = num1 + num2;
} else if (operator.equals("-")) {
result = num1 - num2;
} else if (operator.equals("*")) {
result = num1 * num2;
} else if (operator.equals("/")) {
result = num1 / num2;
}
tfResult.setText(Double.toString(result));
}
public static void main(String[] args) {
new Calculator();
}
}
```
以上代码实现了一个计算器,包括两个文本框、一个标签、一个按钮和一个文本框。在点击等号按钮或者在第二个文本框按回车时,会调用calculate()方法来计算结果并显示在最后一个文本框中。在标签上单击鼠标时,会更换标签上的运算符,从而实现不同的运算。