
import java.awt.Container; |
import java.awt.GridLayout; |
import java.awt.BorderLayout; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import javax.swing.JButton; |
import javax.swing.JFrame; |
import javax.swing.JPanel; |
import javax.swing.JTextField; |
/** |
* Java计算器 Calculater |
*/ |
public class Calculater extends JFrame implements ActionListener { |
JFrame jf; |
JTextField jtf; |
String[] b = new String[] { "+", "-", "*", "/", "." }; |
JButton jis = new JButton("="); |
private int temp = 0; |
private float result = 0; |
private float fnumber = 0, bnumber = 0; |
public Calculater() { |
init(); |
} |
public void init() { |
jf = new JFrame(); |
jtf = new JTextField(); |
Container c = jf.getContentPane();// Returns the contentPane object for |
// this frame. |
jtf.setHorizontalAlignment(JTextField.RIGHT);// 设置文本的水平对齐方式 |
jtf.setLayout(new GridLayout()); |
c.add(jtf, BorderLayout.NORTH);// |
JPanel jp = new JPanel(); |
jp.setLayout(new GridLayout(4, 4));// 对于GridLayout(int rows,int |
// cols)详情请参见API |
c.add(jp, BorderLayout.CENTER);/* 这里刚开始犯了一低级错误,将c写成了jp,逻辑调用都出现了问题 */ |
JButton[] ja = new JButton[10]; |
JButton[] jb = new JButton[5]; |
for (int i = 0; i < 10; i++) { |
ja[i] = new JButton("" + i); |
ja[i].addActionListener(this); |
} |
for (int j = 0; j < 5; j++) { |
jb[j] = new JButton("" + b[j]); |
jb[j].addActionListener(this); |
} |
for (int i = 0; i < 10; i++) { |
jp.add(ja[i]); |
} |
for (int j = 0; j < 5; j++) { |
jp.add(jb[j]); |
} |
jp.add(jis); |
jis.addActionListener(this); |
jf.setSize(200, 300); |
jf.setVisible(true); |
} |
public void actionPerformed(ActionEvent e) { |
String s = e.getActionCommand(); |
if (s.equals("+")) { |
this.fnumber = Float.parseFloat(this.jtf.getText()); |
this.jtf.setText(""); |
this.temp = 1; |
} else if (s.equals("-")) { |
this.fnumber = Float.parseFloat(this.jtf.getText()); |
this.jtf.setText(""); |
this.temp = 2; |
} else if (s.equals("*")) { |
this.fnumber = Float.parseFloat(this.jtf.getText()); |
this.jtf.setText(""); |
this.temp = 3; |
} else if (s.equals("/")) { |
this.fnumber = Float.parseFloat(this.jtf.getText()); |
this.jtf.setText(""); |
this.temp = 4; |
} else if (s.equals(".")) { |
if (jtf.equals("")) { |
jtf.setText("0."); |
} else { |
jtf.setText(jtf.getText() + "."); |
} |
} else if (s.equals("=")) { |
this.bnumber = Integer.parseInt(this.jtf.getText()); |
switch (this.temp) { |
case 1: |
result = fnumber + bnumber; |
this.jtf.setText(String.valueOf(result)); |
break; |
case 2: |
result = fnumber - bnumber; |
this.jtf.setText(String.valueOf(result)); |
break; |
case 3: |
result = fnumber * bnumber; |
this.jtf.setText(String.valueOf(result)); |
break; |
case 4: |
result = fnumber / bnumber; |
this.jtf.setText(String.valueOf(result)); |
break; |
} |
} else { |
jtf.setText(jtf.getText() + e.getActionCommand()); |
} |
} |
public static void main(String[] args) { |
new Calculater(); |
} |
} |



