问答题
本程序定义了一个简单的计算器,可以进行基本的四则运算。程序中布局了16个按钮用来表示0~9以及运算符和点号,程序顶部的文本框用来显示运算数及结果,如图所示。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class exam_61 {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) { }
JFrame frame=new CalculatorFrame();
frame.show();
}
}
class CalculatorPanel extends JPanel implements ActionListener {
private JTextField display;
private JButton btn;
private double arg=0;
private String op="=";
private boolean start=true;
public CalculatorPanel() {
setLayout(new BorderLayout());
display=new JTextField("0");
display.setEditable(false);
add(display, "North");
JPanel p=new JPanel();
p.setLayout(new GridLayout(4, 4));
String buttons="789/456*123-0.=+";
for (int i=0; i<buttons.length(); i++) {
btn=new JButton(buttons.substring(i, i + i));
p.add(btn);
______;
}
add(p, "Center");
}
public void actionPerformed(ActionEvent evt) {
String s=evt.getActionCommand();
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=______;
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;
else if (op.equals("/")) arg /= n;
else if (op.equals("=")) arg=n;
display.setText("" + arg);
}
}
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
setTitle("exam_61");
setSize(220, 180);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit (0);
}
});
Container contentPane=getContentPane();
contentPane.add(new CalculatorPanel());
}
}
【参考答案】
第1处:btn.addActionListener(this)
第2处:Double.parseDouble(......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)