高分求 一个 Java 编写的简单计数器程序

2024-12-30 19:17:08
推荐回答(1个)
回答1:

看来我们也是一个老师........
import java.awt.*;
import java.awt.event.*;

class CalculatorPanel extends Panel implements ActionListener {
private TextField display;
private double arg = 0;
private String op = "=";
private boolean start = true; // true: App启动后,第一次按键。

// constructor
/* <生成一个面板对象>。 */
public CalculatorPanel() {
// 在构造中<设置该面板的布局方式>
this.setLayout(new BorderLayout()); // Layout Manager。 //这用的是哪个角色?

/* <生成 元件> */
display = new TextField("0"); // 生成一个 文本框。作为显示屏用。
// 设置元件属性。
display.setEditable(false); // 去掉该文本框的可编辑性。

/* <面板对象中 加入 元件> */
this.add(display, "North"); // 文本框被加入面板的north区,执行显示任务。

/* 再生成一个面板对象。 */
Panel p = new Panel();
// 设置该面板的布局方式
p.setLayout(new GridLayout(4, 4));

String buttons = "789/456*123-0.=+";
// ||||||||||||||||
// 0123456789
for (int i = 0; i < buttons.length(); i++) {
/* 方法中,生成元件---按钮。 */
/* 元件加入面板容器中。 */
this.addButton(p, buttons.substring(i, i + 1));
// 截取出一个个字符。----作为按钮面字符。
}
// 将该panel放入窗口的center区。
this.add(p, "Center");
}

private void addButton(Container c, String s) {
Button b = new Button(s);
c.add(b);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent evt) {
String s = evt.getActionCommand();
System.out.println("evt.getActionCommand()" + s);
System.out.println("start: " + start);
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {

if (start)
display.setText(s);
else
display.setText(display.getText() + s);
start = false;
} else {
if (start) {
if (s.equals("-")) {
display.setText(s);
start = false;
} else
op = s;
} else {
double x = Double.parseDouble(display.getText());
calculate(x);
op = s;
start = true;
}
}
}

public void calculate(double n) {
if (op.equals("+"))
arg += n;
else if (op.equals("-"))
arg -= n;
else if (op.equals("*"))
arg *= n; // arg=arg*n;
else if (op.equals("/"))
arg /= n;
else if (op.equals("="))
arg = n;
display.setText("" + arg);
}

}

/**
* 自定义的窗口容器类。 作为计算器的最底层的窗口类。
* */
class CalculatorFrame extends Frame {
public CalculatorFrame() {
this.setTitle("Calculator");
setSize(200, 200);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
CalculatorFrame.this.setVisible(false);
System.out.println("in windowClosing()。");
System.exit(0);
}
});

this.add(new CalculatorPanel());

}
}

public class MyCalculator {
public static void main(String[] args) {
Frame frame = new CalculatorFrame();
frame.show();
}
}