用java写应该计算器,要求有基本都窗口
时间: 2024-04-02 21:33:38 浏览: 14
好的,你想要一个基于 Java 的计算器,同时带有基本的图形用户界面。我可以给你一些建议,帮助你开始编写这个应用程序。
首先,你需要选择一个 Java GUI 框架,如 Swing 或 JavaFX。这些框架提供了许多内置的组件,如文本框、标签、按钮等,方便你构建用户界面。
接下来,你需要实现计算器的逻辑。这可以通过编写一个简单的解析器来实现。该解析器应该能够识别用户的输入并计算结果。你可以使用 Java 的字符串分割函数和递归函数来实现这个解析器。
最后,你需要将用户界面和计算器逻辑结合起来。这可以通过添加事件监听器来实现,当用户按下按钮时,你的程序需要调用相应的计算器函数来计算结果,并将结果显示在文本框中。
总之,编写一个基于 Java 的计算器需要一些编程经验和知识,但是使用现有的 Java GUI 框架和基本的解析器技术可以使这个过程变得更加容易。
相关问题
请你帮我用java语言写一个计算器,带有窗口
好的,下面是一个简单的 Java 计算器程序,带有窗口界面,可以进行加、减、乘、除四种基本运算:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorGUI extends JFrame implements ActionListener {
private JLabel labelNum1, labelNum2, labelResult;
private JTextField textFieldNum1, textFieldNum2, textFieldResult;
private JButton buttonAdd, buttonSubtract, buttonMultiply, buttonDivide;
public CalculatorGUI() {
setTitle("计算器");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
labelNum1 = new JLabel("第一个数字:");
labelNum2 = new JLabel("第二个数字:");
labelResult = new JLabel("计算结果:");
textFieldNum1 = new JTextField(10);
textFieldNum2 = new JTextField(10);
textFieldResult = new JTextField(10);
textFieldResult.setEditable(false);
buttonAdd = new JButton("+");
buttonSubtract = new JButton("-");
buttonMultiply = new JButton("*");
buttonDivide = new JButton("/");
buttonAdd.addActionListener(this);
buttonSubtract.addActionListener(this);
buttonMultiply.addActionListener(this);
buttonDivide.addActionListener(this);
JPanel panelInput = new JPanel(new GridLayout(2, 2));
panelInput.add(labelNum1);
panelInput.add(textFieldNum1);
panelInput.add(labelNum2);
panelInput.add(textFieldNum2);
JPanel panelButtons = new JPanel(new GridLayout(1, 4));
panelButtons.add(buttonAdd);
panelButtons.add(buttonSubtract);
panelButtons.add(buttonMultiply);
panelButtons.add(buttonDivide);
JPanel panelOutput = new JPanel(new GridLayout(1, 2));
panelOutput.add(labelResult);
panelOutput.add(textFieldResult);
JPanel panelMain = new JPanel(new GridLayout(3, 1));
panelMain.add(panelInput);
panelMain.add(panelButtons);
panelMain.add(panelOutput);
add(panelMain);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
double num1 = Double.parseDouble(textFieldNum1.getText());
double num2 = Double.parseDouble(textFieldNum2.getText());
double result = 0.0;
if (e.getSource() == buttonAdd) {
result = num1 + num2;
} else if (e.getSource() == buttonSubtract) {
result = num1 - num2;
} else if (e.getSource() == buttonMultiply) {
result = num1 * num2;
} else if (e.getSource() == buttonDivide) {
if (num2 == 0) {
JOptionPane.showMessageDialog(null, "除数不能为0", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
result = num1 / num2;
}
textFieldResult.setText(String.valueOf(result));
}
public static void main(String[] args) {
new CalculatorGUI();
}
}
```
运行程序后,它会打开一个窗口界面,在界面中输入两个数字和一个运算符,然后点击计算按钮,输出计算结果。如果除数为0,则会弹出一个错误提示窗口。
用java写一个SWT应用程序窗口的计算器代码
以下是一个简单的SWT应用程序窗口计算器的Java代码:
```java
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Calculator {
private Shell shell;
private Text displayText;
public Calculator(Display display) {
shell = new Shell(display);
shell.setText("Calculator");
shell.setLayout(new GridLayout(4, true));
// 创建显示文本区域
displayText = new Text(shell, SWT.RIGHT);
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1);
displayText.setLayoutData(gridData);
// 创建数字和运算符按钮
Button button0 = new Button(shell, SWT.PUSH);
button0.setText("0");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button0.setLayoutData(gridData);
Button button1 = new Button(shell, SWT.PUSH);
button1.setText("1");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button1.setLayoutData(gridData);
Button button2 = new Button(shell, SWT.PUSH);
button2.setText("2");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button2.setLayoutData(gridData);
Button button3 = new Button(shell, SWT.PUSH);
button3.setText("3");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button3.setLayoutData(gridData);
Button button4 = new Button(shell, SWT.PUSH);
button4.setText("4");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button4.setLayoutData(gridData);
Button button5 = new Button(shell, SWT.PUSH);
button5.setText("5");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button5.setLayoutData(gridData);
Button button6 = new Button(shell, SWT.PUSH);
button6.setText("6");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button6.setLayoutData(gridData);
Button button7 = new Button(shell, SWT.PUSH);
button7.setText("7");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button7.setLayoutData(gridData);
Button button8 = new Button(shell, SWT.PUSH);
button8.setText("8");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button8.setLayoutData(gridData);
Button button9 = new Button(shell, SWT.PUSH);
button9.setText("9");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
button9.setLayoutData(gridData);
Button buttonPlus = new Button(shell, SWT.PUSH);
buttonPlus.setText("+");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
buttonPlus.setLayoutData(gridData);
Button buttonMinus = new Button(shell, SWT.PUSH);
buttonMinus.setText("-");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
buttonMinus.setLayoutData(gridData);
Button buttonMultiply = new Button(shell, SWT.PUSH);
buttonMultiply.setText("*");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
buttonMultiply.setLayoutData(gridData);
Button buttonDivide = new Button(shell, SWT.PUSH);
buttonDivide.setText("/");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
buttonDivide.setLayoutData(gridData);
Button buttonEquals = new Button(shell, SWT.PUSH);
buttonEquals.setText("=");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
buttonEquals.setLayoutData(gridData);
// 添加按钮事件监听器
SelectionAdapter buttonListener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
Button button = (Button) event.widget;
String buttonText = button.getText();
String displayString = displayText.getText();
displayText.setText(displayString + buttonText);
}
};
button0.addSelectionListener(buttonListener);
button1.addSelectionListener(buttonListener);
button2.addSelectionListener(buttonListener);
button3.addSelectionListener(buttonListener);
button4.addSelectionListener(buttonListener);
button5.addSelectionListener(buttonListener);
button6.addSelectionListener(buttonListener);
button7.addSelectionListener(buttonListener);
button8.addSelectionListener(buttonListener);
button9.addSelectionListener(buttonListener);
// 添加运算符按钮事件监听器
SelectionAdapter operatorListener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
Button button = (Button) event.widget;
String buttonText = button.getText();
String displayString = displayText.getText();
displayText.setText(displayString + " " + buttonText + " ");
}
};
buttonPlus.addSelectionListener(operatorListener);
buttonMinus.addSelectionListener(operatorListener);
buttonMultiply.addSelectionListener(operatorListener);
buttonDivide.addSelectionListener(operatorListener);
// 添加等于号按钮事件监听器
buttonEquals.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String displayString = displayText.getText();
String[] tokens = displayString.split(" ");
int result = Integer.parseInt(tokens[0]);
for (int i = 1; i < tokens.length; i += 2) {
String operator = tokens[i];
int operand = Integer.parseInt(tokens[i + 1]);
if (operator.equals("+")) {
result += operand;
} else if (operator.equals("-")) {
result -= operand;
} else if (operator.equals("*")) {
result *= operand;
} else if (operator.equals("/")) {
result /= operand;
}
}
displayText.setText(Integer.toString(result));
}
});
// 设置窗口大小和打开窗口
shell.setSize(200, 200);
shell.open();
}
public void run() {
Display display = Display.getDefault();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
Display display = new Display();
Calculator calculator = new Calculator(display);
calculator.run();
}
}
```
这个窗口计算器包含数字、运算符、等于号按钮和一个文本区域来显示计算结果。每当用户点击一个数字或运算符按钮时,它们都将显示在文本区域中。当用户点击等于号按钮时,程序将从文本区域中提取出数字和运算符,计算结果并将其显示在文本区域中。