第二次修改:计算器样式

master
liwenjun 10 months ago
parent ad3bdfc479
commit d1ead7bbb9

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@
# 默认忽略的文件
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Calculator/Calculator.iml" filepath="$PROJECT_DIR$/Calculator/Calculator.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/new.iml" filepath="$PROJECT_DIR$/.idea/new.iml" />
</modules>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -1,119 +0,0 @@
package java6324.rj;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame {
private JTextField input1, input2, result;
private JButton addButton, subtractButton, multiplyButton, divideButton, modButton;
private JPanel panel;
public Calculator() {
setTitle("Simple Calculator");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(5, 4, 5, 5));
panel = new JPanel();
panel.setLayout(new GridLayout(5, 4, 5, 5));
input1 = new JTextField(5);
input2 = new JTextField(5);
result = new JTextField(5);
result.setEditable(false);
addButton = new JButton("+");
subtractButton = new JButton("-");
multiplyButton = new JButton("*");
divideButton = new JButton("/");
modButton = new JButton("%");
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate(1);
}
});
subtractButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate(2);
}
});
multiplyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate(3);
}
});
divideButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate(4);
}
});
modButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate(5);
}
});
panel.add(new JLabel("Input 1:"));
panel.add(input1);
panel.add(new JLabel("Input 2:"));
panel.add(input2);
panel.add(addButton);
panel.add(subtractButton);
panel.add(multiplyButton);
panel.add(divideButton);
panel.add(modButton);
panel.add(new JLabel());
panel.add(result);
add(panel);
setVisible(true);
}
private void calculate(int operation) {
try {
double num1 = Double.parseDouble(input1.getText());
double num2 = Double.parseDouble(input2.getText());
double res = 0;
switch (operation) {
case 1:
res = num1 + num2;
break;
case 2:
res = num1 - num2;
break;
case 3:
res = num1 * num2;
break;
case 4:
if (num2 != 0) {
res = num1 / num2;
} else {
result.setText("Error");
return;
}
break;
case 5:
if (num2 != 0) {
res = num1 % num2;
} else {
result.setText("Error");
return;
}
break;
}
result.setText(String.valueOf(res));
} catch (NumberFormatException e) {
result.setText("Invalid Input");
}
}
public static void main(String[] args) {
new Calculator();
}
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,110 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame implements ActionListener {
private final JTextField textField; // 显示输入和结果的文本框
private double result = 0; // 计算结果
private String operator = ""; // 运算符
private boolean calculating = true; // 是否正在计算中
public Calculator() {
setTitle("计算器");
textField = new JTextField("0");
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.RIGHT); // 右对齐显示
textField.setFont(new Font("Arial", Font.BOLD, 24)); // 增加文本框字体大小
add(textField, BorderLayout.NORTH);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5, 4, 10, 10)); // 增加网格布局的间距
String[] buttons = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"C", "0", ".", "+",
"="
};
for (String text : buttons) {
JButton button = new JButton(text);
button.setFont(new Font("Arial", Font.BOLD, 18)); // 增加按钮字体大小
button.addActionListener(this);
panel.add(button);
}
add(panel, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 500); // 设置窗口大小为宽800像素高500像素
setLocationRelativeTo(null); // 窗口居中显示
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if ('0' <= command.charAt(0) && command.charAt(0) <= '9' || command.equals(".")) {
if (calculating) {
textField.setText(command);
calculating = false;
} else {
textField.setText(textField.getText() + command);
}
} else {
switch (command) {
case "C":
textField.setText("0");
operator = "";
result = 0;
calculating = true;
break;
case "+":
case "-":
case "*":
case "/":
if (!calculating) {
result = Double.parseDouble(textField.getText());
operator = command;
calculating = true;
}
break;
case "=":
if (!calculating) {
calculate(Double.parseDouble(textField.getText()));
}
break;
}
}
}
private void calculate(double n) {
switch (operator) {
case "+":
result += n;
break;
case "-":
result -= n;
break;
case "*":
result *= n;
break;
case "/":
if (n != 0) {
result /= n;
} else {
JOptionPane.showMessageDialog(this, "除数不能为0");
return;
}
break;
}
textField.setText("" + result);
operator = "";
calculating = true;
}
public static void main(String[] args) {
new Calculator();
}
}
Loading…
Cancel
Save