SimpleJavaSwingCalculator

来源:互联网 发布:西瓜影音mac官方下载 编辑:程序博客网 时间:2024/06/02 11:16
package corejavaI.layout;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CalculatorTest {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        JPanel panel = new CalculatorPanel();
        frame.add(panel);
        frame.setTitle("SimpleJavaSwingCalculator");
        frame.setSize(300, 300);
        frame.setLocation(200, 100);
        frame.setVisible(true);
    }

}
class CalculatorPanel extends JPanel{
    
    private JButton display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
    
    public CalculatorPanel(){
        setLayout(new BorderLayout());
        result = 0;
        lastCommand = "=";
        start = true;
        display = new JButton("0");
        display.setEnabled(false);
        add(display, BorderLayout.NORTH);
        
        ActionListener insert = new InsertAction();
        ActionListener command = new CommandAction();
        ActionListener resetCommand = new ResetAction();
        
        panel = new JPanel();
        panel.setLayout(new GridLayout(5, 4));
    
        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("重置", resetCommand);
    
        add(panel, BorderLayout.CENTER);
    }
    
    private void addButton(String label, ActionListener listener){
        JButton button = new JButton(label);
        button.addActionListener(listener);
        panel.add(button);
    }
    
    private class InsertAction implements ActionListener{

        public void actionPerformed(ActionEvent e) {
            String input = e.getActionCommand();
            if(start){
                display.setText("");
                start = false;
            }
            display.setText(display.getText() + input);
        }
        
    }
    
    private class CommandAction implements ActionListener{

        public void actionPerformed(ActionEvent e) {
            String command = e.getActionCommand();
            if(start){
                if(command.equals("-")){
                    display.setText(command);
                    start = false;
                }else{
                    lastCommand = command;
                }
            }else{
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
            }
        }
        
    }
    
    private class ResetAction implements ActionListener{

        public void actionPerformed(ActionEvent e) {
            display.setText("0");
        }
        
    }
    
    public void calculate(double x){
        if(lastCommand.equals("+"))
            result += x;
        else if(lastCommand.equals("-"))
            result -= x;
        else if(lastCommand.equals("*"))
            result *= x;
        else if(lastCommand.equals("/"))
            result /= x;
        else if(lastCommand.equals("="))
            result = x;
        display.setText("" + result);
    }
}
0 0
原创粉丝点击