package Works_JavaLesson;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator {
/**
* @param Caculator
* @author CHENJIAN
*/
public static void main(String[] args) {
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class CalculatorFrame extends JFrame{
public CalculatorFrame(){
setTitle("Calculator");
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel{
public CalculatorPanel(){
setLayout(new BorderLayout());
result = 0;
display = new JLabel("0", JLabel.RIGHT);
start = true;
panel_1 = new JPanel();
panel_3 = new JPanel();
lastCommand = "=";
display.setEnabled(true);
panel_3.add(display);
add(panel_3, BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel_1.setLayout(new GridLayout(5, 4));
add(panel_1, BorderLayout.CENTER);
addButton("7", insert);
addButton("8", insert);
addButton("9", insert);
addButton("/", command);
addButton("4", insert);
addButton("5", insert);
addButton("6", insert);
addButton("*", command);
addButton("1", insert);
addButton("2", insert);
addButton("3", insert);
addButton("-", command);
addButton("0", insert);
addButton(".", insert);
addButton("%", command);
addButton("+", command);
addButton("←", insert);
addButton("+/-", command);
addButton("=", command);
addButton("AC", insert);
}
public void addButton(String btnname, ActionListener listener){
JButton btn = new JButton(btnname);
btn.addActionListener(listener);
panel_1.add(btn);
}
private class InsertAction implements ActionListener{
public void actionPerformed(ActionEvent event){
String input = event.getActionCommand();
if(start){
display.setText(input);
start = false;
}
else if(input.equals("←")){
String str = display.getText();
if(str.length() > 0){
display.setText(str.substring(0, str.length()-1));
}
else{
display.setText("0");
}
}
else if(input.equals("AC")){
start = true;
display.setText("0");
lastCommand = "=";
}
else{
display.setText(display.getText() + input);
}
}
}
private class CommandAction implements ActionListener{
public void actionPerformed(ActionEvent event){
String command = event.getActionCommand();
if(start){
if(command.equals("+/-")){
display.setText("-");
start = false;
}
else{
lastCommand = command;
}
}
else{
Calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void Calculate(double d){
if(lastCommand.equals("+")){
result += d;
}
else if(lastCommand.equals("-")){
result -= d;
}
else if(lastCommand.equals("*")){
result *= d;
}
else if(lastCommand.equals("/")){
result /= d;
}
else if(lastCommand.equals("%")){
result %= d;
}
else if(lastCommand.equals("=")){
result = d;
}
display.setText("" + result);
}
private double result;
private JLabel display;
private boolean start;
private JPanel panel_1;
private JPanel panel_3;
private String lastCommand;
}
2009-05-28 09:53:09