JAVA 1. 事件处理:简单计算器实现 【问题描述】 实现一个简单的计算器,前面是一个文本框(操作数1),后面是标签(操作符),再后面是一个文本框(操作数2),然后是一个"="按钮(JButton),最后是一个文本框(结果) (1)实现按钮ActionEvent事件的处理,点击等号获取计算结果,并显示在最后一个文本框; (2)实现第二个文本框的ActionEvent事件处理,在第二个文本框按回车,直接获得计算结果,并显示在最后一个文本框。(事件源为第二个文本框) (3)实现运算符标签的MouseEvent事件的处理,点击标签,可以更换标签的运算符,比如:将加号改成减号,从而实现减法功能,点击等号按钮,实现减法运算,并将结果显示在第三个文本框中。(具体实现:实现mouseClicked()时,判断鼠标单击次数是否为除4余0、余1、余2、余3,比如余为1,则将运算符标签上的字符修改为”-”,从而实现减法运算
时间: 2024-02-15 12:03:49 浏览: 67
好的,下面是一个简单计算器的示例代码,可以完成你所需的三个事件处理。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener, KeyListener, MouseListener {
private JTextField num1Field, num2Field, resultField;
private JButton equalButton;
private JLabel operatorLabel;
public Calculator() {
super("Calculator");
num1Field = new JTextField(10);
num1Field.addKeyListener(this);
operatorLabel = new JLabel("+");
operatorLabel.addMouseListener(this);
num2Field = new JTextField(10);
num2Field.addKeyListener(this);
equalButton = new JButton("=");
equalButton.addActionListener(this);
resultField = new JTextField(10);
resultField.setEditable(false);
JPanel panel = new JPanel(new FlowLayout());
panel.add(num1Field);
panel.add(operatorLabel);
panel.add(num2Field);
panel.add(equalButton);
panel.add(resultField);
add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(250, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == equalButton) {
double num1 = Double.parseDouble(num1Field.getText());
double num2 = Double.parseDouble(num2Field.getText());
String operator = operatorLabel.getText();
double result = 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;
}
resultField.setText(String.format("%.2f", result));
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
double num1 = Double.parseDouble(num1Field.getText());
double num2 = Double.parseDouble(num2Field.getText());
String operator = operatorLabel.getText();
double result = 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;
}
resultField.setText(String.format("%.2f", result));
}
}
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() % 4 == 1) {
operatorLabel.setText("-");
} else if (e.getClickCount() % 4 == 2) {
operatorLabel.setText("*");
} else if (e.getClickCount() % 4 == 3) {
operatorLabel.setText("/");
} else {
operatorLabel.setText("+");
}
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public static void main(String[] args) {
new Calculator();
}
}
```
这个示例代码中,我们使用了JTextField、JLabel、JButton等Swing组件来实现计算器,同时实现了ActionListener、KeyListener和MouseListener接口来处理三个事件。
在actionPerformed()方法中,我们获取了文本框和标签中的数据和运算符,并根据运算符计算出结果,最后将结果显示在最后一个文本框中。
在keyPressed()方法中,我们实现了当用户在第二个文本框中按下回车键时,直接获取计算结果并显示在最后一个文本框中。
在mouseClicked()方法中,我们判断鼠标单击次数的余数,根据余数更改运算符标签的字符,并实现减法运算。
希望这个示例代码可以帮助到你!
阅读全文