public class Calculator extends JFrame { private JPanel result, button; private JLabel show; private JButton CLR, add, minus, Multiply, divide; private JTextField field; private Double answer; private String number; public Calculator() { super("Calculator"); this.setLocationRelativeTo(null);// set up window this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(600, 200); result = new JPanel(); answer = 0.0 ; show = new JLabel(Double.toString(answer), SwingConstants.RIGHT);// let the result at the right of the field result.add(show); JTextField filed = new JTextField(Double.toString(answer));// setup the size of the text field filed.setColumns(6); filed.setHorizontalAlignment(JTextField.RIGHT); button = new JPanel(); button.setLayout(new GridLayout(1, 5)); CLR = new JButton("CLR");// add the buttons of calculation. add = new JButton("+"); minus = new JButton("-"); Multiply = new JButton("*"); divide = new JButton("/"); button.add(CLR); button.add(add); button.add(minus); button.add(Multiply); button.add(divide); CLR.addActionListener(e -> {// clear answer = 0.0; show.setText(Double.toString(answer)); field.setText(" "); }); add.addActionListener(e -> {// add number = field.getText(); if (!number.equals(null)) { double value = Double.parseDouble(number); answer += value; show.setText(Double.toString(answer)); field.setText(""); } }); minus.addActionListener(e -> {// minus number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer -= value; show.setText(Double.toString(answer)); field.setText(""); } }); Multiply.addActionListener(e -> {// multiply number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer *= value; show.setText(Double.toString(answer)); field.setText(""); } }); divide.addActionListener(e -> {// divide number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer /= value; show.setText(Double.toString(answer)); field.setText(""); } }); add(button); add(field); add(result); this.setLayout(new GridLayout(3, 1)); this.setVisible(true); }
时间: 2024-01-25 13:03:48 浏览: 183
你好,看起来这是一个实现简单计算器的 Java Swing 程序。程序界面有一个文本框和一些按钮,可以进行加减乘除等基本运算。
程序中的 `JTextField` 组件 `field` 用于输入数字,每当用户点击一个按钮时,程序会读取 `field` 中的数字并进行相应的运算。运算结果会显示在 `JLabel` 组件 `show` 中。
程序中的 `CLR` 按钮可以清除输入的数字并将结果重置为 0。其他按钮则分别对应加、减、乘、除四种运算。当用户点击这些按钮时,程序会从 `field` 中读取数字,并根据当前的运算符进行相应的运算,然后将结果显示在 `show` 中。
这个程序很简单,但可以帮助你了解 Java Swing 程序的基本结构和事件处理机制。如果你想深入了解 Java Swing,可以查看相关的文档或书籍。
相关问题
public Calculator() { super("Calculator"); this.setLocationRelativeTo(null);// set up window this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(600, 200); result = new JPanel(); answer = 0.0 ; show = new JLabel(Double.toString(answer), SwingConstants.RIGHT);// let the result at the right of the field result.add(show); JTextField input = new JTextField(Double.toString(answer));// setup the size of the text field input.setColumns(6); input.setHorizontalAlignment(JTextField.RIGHT); button = new JPanel(); button.setLayout(new GridLayout(1, 5)); CLR = new JButton("CLR");// add the buttons of calculation. add = new JButton("+"); minus = new JButton("-"); Multiply = new JButton("*"); divide = new JButton("/"); button.add(CLR); button.add(add); button.add(minus); button.add(Multiply); button.add(divide); CLR.addActionListener(e -> {// clear answer = 0.0; show.setText(Double.toString(answer)); field.setText(" "); }); add.addActionListener(e -> {// add number = field.getText(); if (!number.equals(null)) { double value = Double.parseDouble(number); answer += value; show.setText(Double.toString(answer)); field.setText(""); } }); minus.addActionListener(e -> {// minus number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer -= value; show.setText(Double.toString(answer)); field.setText(""); } }); Multiply.addActionListener(e -> {// multiply number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer *= value; show.setText(Double.toString(answer)); field.setText(""); } }); divide.addActionListener(e -> {// divide number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer /= value; show.setText(Double.toString(answer)); field.setText(""); } }); add(button); add(field); add(result); this.setLayout(new GridLayout(3, 1)); this.setVisible(true); }错哪了
这段代码似乎是一个简单的计算器程序,但是在代码中没有定义 `field` 变量,因此在添加 `field` 变量时,需要先进行定义。此外,在 `Multiply` 和 `divide` 的实现中,没有对除数为0的情况进行处理,这会导致程序抛出异常。因此应该在这两个实现中添加对除数为0的情况进行处理的代码。
检查以下代码package calculatorDome; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class CalculatorDome { public static void main(String[] args) { // TODO Auto-generated method stub new calculator_dome(); } } class calculator_dome extends Frame{//1:继承Frame //2:定义组件 JLabel jl;//标签 JTextField jtf1,jtf2,jtf3;//3个文本框 JButton jb;//按钮 JPanel jp; //构造方法 public calculator_dome (){ //3:创建组件 jtf1 = new JTextField(); jl = new JLabel(); jtf2 = new JTextField(); jb = new JButton(); jtf3 = new JTextField(); jp = new JPanel(); //4:设置布局管理,添加组件 jp.add(jtf1); jp.add(jl); jp.add(jtf2); jb.setText("="); jp.add(jb); jp.add(jtf3); this.setLayout(new BorderLayout()); this.add(jp,BorderLayout.NORTH); //5:设置窗口 this.setTitle("Simple Calculator"); this.setSize(200,200); this.setLocation(500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
该代码存在一些问题:
1. 类名应该以大写字母开头,应该将 "calculator_dome" 改为 "CalculatorDome"。
2. 继承 Frame 类不是最佳实践,应该使用 JFrame。
3. 应该在主方法里创建 JFrame 对象,而不是在 CalculatorDome 类的构造方法里创建。
4. 应该在事件监听器中添加计算逻辑,目前代码只是简单地将等号按钮添加到界面上,并没有实现计算功能。
5. 界面布局可以更好地设计,比如使用网格布局,让界面更美观。
下面是修改后的代码:
```java
package calculatorDemo;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class CalculatorDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(1, 5));
JTextField textField1 = new JTextField();
JLabel label = new JLabel("+");
JTextField textField2 = new JTextField();
JButton button = new JButton("=");
JTextField textField3 = new JTextField();
button.addActionListener(e -> {
int num1 = Integer.parseInt(textField1.getText());
int num2 = Integer.parseInt(textField2.getText());
int result = num1 + num2;
textField3.setText(String.valueOf(result));
});
panel.add(textField1);
panel.add(label);
panel.add(textField2);
panel.add(button);
panel.add(textField3);
frame.add(panel, BorderLayout.NORTH);
frame.setVisible(true);
}
}
```
阅读全文
相关推荐















