⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exlp.java

📁 一个小型计算器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
public class exlp extends Frame implements ActionListener {
    private Button[]  buttons = new Button[19];
    private String[] buttonText =
    {  "1", "2", "3", "+", "-",
       "4", "5", "6", "x", "/",
       "7", "8", "9", "^", "sqrt",
       "c", "0", ".", " = "
    };
    private ETextField result;
    private String    input = "";
    private Label     label;
    private Color     forecolor,
            backcolor,
            fieldcolor;
    private Font      font,
            buttonfont;
    private int       oper = 0,
            oldoper = 0,
            newoper = 0;
    
    private double    answer,
            num1 = 0.0,
            num2 = 0.0,
            num3 = 0.0;
    private final int  ADD = 1,
            SUB = 2,
            MULT = 3,
            DIVI = 4,
            POW = 5,
            SQRT =6;
    private boolean    firstpress = true,
            morenums = false,
            equals = false,
            clearscreen = false,
            decnumber = false,
            doubleclick = false;
    public exlp() {
        super("计算器");
        buttonfont = new Font( "Courier", Font.PLAIN, 12 );
        setBackground(Color.lightGray);
        result = new ETextField(123,20);
        font = new Font( "宋体", Font.PLAIN, 10) ;
        label = new Label("结果");
        label.setFont( font );
        result.setBackground( Color.white);
        setLayout(new FlowLayout());
        
        Panel mainPanel=new Panel();
        mainPanel.setLayout( new GridLayout(5,1) );
        for ( int i = 0; i<19; i++ ) {
            buttons[i] = new Button( buttonText[i] );
            buttons[i].setFont( buttonfont );
            buttons[i].addActionListener( this );
        }
        
        Panel panel1=new Panel();
        panel1.add( result );
        panel1.add( label );
        mainPanel.add( panel1);
        
        Panel panel2=new Panel();
        panel2.add( buttons[0]);
        panel2.add( buttons[1]);
        panel2.add( buttons[2]);
        panel2.add( new Label( " " ));
        panel2.add( buttons[3]);
        panel2.add( buttons[4]);
        mainPanel.add( panel2);
        
        Panel panel3=new Panel();
        panel3.add( buttons[5]);
        panel3.add( buttons[6]);
        panel3.add( buttons[7]);
        panel3.add( new Label( " " ));
        panel3.add( buttons[8]);
        panel3.add( buttons[9]);
        mainPanel.add( panel3);
        
        Panel panel4=new Panel();
        panel4.add( buttons[10]);
        panel4.add( buttons[11]);
        panel4.add( buttons[12]);
        panel4.add( new Label( " " ));
        panel4.add( buttons[13]);
        panel4.add( buttons[14]);
        mainPanel.add( panel4);
        
        Panel panel5=new Panel();
        panel5.add( buttons[15]);
        panel5.add( buttons[16]);
        panel5.add( buttons[17]);
        panel5.add( new Label( " " ));
        panel5.add( buttons[18]);
        mainPanel.add( panel5);
        
        add( "Center",mainPanel );
        
        buttons[15].setForeground( Color.red );
        
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        resize(200,210);
        show();
    }
    
    
    
    public void actionPerformed( ActionEvent e) {
        if (e.getSource() != buttons[3] && e.getSource() != buttons[4]
                && e.getSource() != buttons[8] && e.getSource() != buttons[9]
                && e.getSource() != buttons[13] && e.getSource() != buttons[14]
                && e.getSource() != buttons[15] && e.getSource() != buttons[18]) {
            if ( clearscreen ) {
                clearScreen();
                clearscreen = false;
            }
            if ( e.getSource() == buttons[0] ) {
                input += "1";
                result.setText( input );
                showAnswer( input );
            } else if ( e.getSource() == buttons[1] ) {
                input += "2";
                showAnswer( input );
            } else if ( e.getSource() == buttons[2] ) {
                input += "3";
                showAnswer( input );
            } else if ( e.getSource() == buttons[5] ) {
                input += "4";
                showAnswer( input );
            } else if ( e.getSource() == buttons[6] ) {
                input += "5";
                showAnswer( input );
            } else if ( e.getSource() == buttons[7] ) {
                input += "6";
                showAnswer( input );
            } else if ( e.getSource() == buttons[10] ) {
                input += "7";
                showAnswer( input );
            } else if ( e.getSource() == buttons[11] ) {
                input += "8";
                showAnswer( input );
            } else if ( e.getSource() == buttons[12] ) {
                input += "9";
                showAnswer( input );
            } else if ( e.getSource() == buttons[16] ) {
                input += "0";
                showAnswer( input );
            } else if ( e.getSource() == buttons[17] ) {
                if ( decnumber == false ) {
                    decnumber = true;
                    input += ".0";
                    showAnswer( input );
                }
            }
        }
        if ( e.getSource() == buttons[3] ) {
            clearscreen = false;
            decnumber = false;
            oper = ADD;
            clickCheck( input );
            if ( doubleclick == false )
                processNumbers();
            input = "";
        } else if ( e.getSource() == buttons[4] ) {
            clearscreen = false;
            decnumber = false;
            oper = SUB;
            clickCheck( input );
            if   ( doubleclick == false )
                processNumbers();
            input = " ";
        } else if ( e.getSource() == buttons[8] ) {
            clearscreen = false;
            decnumber = false;
            oper = MULT;
            clickCheck( input );
            if   ( doubleclick == false )
                processNumbers();
            input = " ";
        } else if ( e.getSource() == buttons[9] ) {
            clearscreen = false;
            decnumber = false;
            oper = DIVI;
            clickCheck( input );
            if   ( doubleclick == false )
                processNumbers();
            input = " ";
        } else if ( e.getSource() == buttons[13] ) {
            clearscreen = false;
            decnumber = false;
            oper = POW;
            clickCheck( input );
            if   ( doubleclick == false )
                processNumbers();
            input = " ";
        } else if ( e.getSource() == buttons[14] ) {
            clearscreen = false;
            oper = SQRT;
            clickCheck( input );
            if   ( doubleclick == false )
                processNumbers();
            input = " ";
        }
        if ( e.getSource() == buttons[15] ) {
            clearScreen();
        }
        if ( e.getSource() == buttons[18] ) {
            equals = true;
            clearscreen = false;
            decnumber = false;
            clickCheck( input );
            if ( doubleclick == false )
                processNumbers();
            input = Double.toString( answer );
        }
    }
    public void processNumbers() {
        if ( firstpress ) {
            if ( equals ) {
                num1 = answer;
                equals =false;
            } else
                num1 = Double.valueOf( input ).doubleValue();
            
            oldoper = oper;
            
            if ( oper == SQRT ) {
                answer = calculate( oldoper, num1, 0.0 ) ;
                showAnswer( Double.toString( answer ) ) ;
                morenums = true;
            }
            firstpress = false;
        } else if ( !morenums ) {
            num2 = Double.valueOf( input ).doubleValue() ;
            answer = calculate( oldoper, num1, num2 ) ;
            showAnswer( Double.toString( answer ) ) ;
            newoper = oper;
            if ( !equals )
                morenums = true;
            else {
                morenums = false;
                firstpress = true;
            }
        } else if ( morenums ) {
            if ( equals ) {
                newoper = oper;
                morenums = false;
            }
            num3 = Double.valueOf( input ).doubleValue();
            answer = calculate( newoper, answer, num3);
            showAnswer( Double.toString (answer) );
            
            newoper = oper;
        }
    }
    public double calculate( int oper, double number1, double number2 ) {
        double answer = 0.0;
        
        
        switch ( oper ) {
            case ADD:
                answer = number1 + number2;
                break;
            case SUB:
                answer = number1 - number2;
                break;
            case MULT:
                answer = number1 * number2;
                break;
            case DIVI:
                answer = number1 / number2;
                break;
            case POW:
                answer = Math.pow( number1, number2 );
                break;
            case SQRT:
                answer = Math.sqrt( number1 );
                break;
        }
        return answer;
    }
    
    public void showAnswer( String s) {
        double answer;
        answer = Double.valueOf(s).doubleValue();
        if ( decnumber )
            result.setText( Double.toString( answer ) );
        else
            result.setText(s);
    }
    public boolean clickCheck( String s ) {
        if ( s == " " )
            doubleclick = true;
        else
            doubleclick = false;
        
        return doubleclick;
    }
    public void clearScreen() {
        oper = 0;
        input = " ";
        answer = 0;
        decnumber = false;
        morenums = false;
        firstpress = true;
        equals = false;
        showAnswer( Integer.toString ( (int) answer) );
    }
    public void paint(Graphics g ) {
        g.drawRect( 0, 0, size() .width  - 1, size() .height - 1);
        g.drawLine( 0, 0, 0, size() .height );
    }
    public static void main( String[] args ) {
        exlp ca=new exlp();
    }
}
class ETextField extends Canvas {
    String message = " ";
    boolean firstTime = true;
    int x;
    
    public ETextField( int width, int height ) {
        setSize( width, height );
    }
    public void setText( String text ) {
        firstTime = false;
        message = text;
        x+=3;
        repaint();
    }
    public void paint( Graphics g ) {
        g.drawRect( 0, 0, size().width-1, size().height-1 );
        g.drawString( message, 3, 13 );
    }
}





















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -