Java 计算器实现

来源:互联网 发布:淘宝怎么分享不了 编辑:程序博客网 时间:2024/06/06 14:06

最近在看JAVA核心技术这本书,里面的一些例子也跟着编写运行了一些,跟着编写计算器这个的时候,发现给了panel部分的实现,frame部分没有给出,所以自己按照前面讲的完善了一下
这里写图片描述
实现的panel部分

package calculator;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class CalculatorPanel extends JPanel{    private JButton display;    private double result;    private String lastCommand;    private boolean start;    private JPanel panel;    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();        //add the button in a 4*4 grid        panel=new JPanel();        panel.setLayout(new GridLayout(4,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);        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 event)        {            String input=event.getActionCommand();            if(start)            {                display.setText("");                start=false;            }            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(command);                    start=false;                }                else lastCommand=command;            }            else            {                calculate(Double.parseDouble(display.getText()));                lastCommand=command;                start=true;            }        }    }    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);    }}

main函数部分

package main;import calculator.*;import java.awt.*;import javax.swing.*;public class MainPart {    public static void main(String[] args)    {        EventQueue.invokeLater(new Runnable()        {            public void run()            {                JFrame frame=new calFrame();                frame.setTitle("Cal");                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                frame.setVisible(true);            }        });    }}class calFrame extends JFrame{    public calFrame()    {        CalculatorPanel panel=new CalculatorPanel();        add(panel);        pack();    }}

Java核心技术(第9版)

0 0
原创粉丝点击