afddaf

//import javax.swing.*;

import javax.swing.JFrame;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.Box;



import java.awt.GridLayout;

import java.awt.BorderLayout;



import java.awt.Dimension;

import java.awt.event.*;



public class myCalculator{

    public static void main(String[] args){

        CalculatorJFrame calculatorJFrame = new CalculatorJFrame();

        

        

    }

}



/* window for the calculator */

class CalculatorJFrame extends JFrame{

    CalculatorJPanel calculatorJPanel;

    

    CalculatorJFrame(){

        calculatorJPanel = new CalculatorJPanel();

        

        //add(calculatorJPanel,BorderLayout.NORTH);

        

        add(calculatorJPanel);

         

        setTitle("计算器");

        //setResizable(false);        

        setBounds(100,100,300,500);

        setVisible(true);

        validate();

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        

    }

}



/* panel for the calculator*/

class CalculatorJPanel extends JPanel implements ActionListener{

    static final int SPLIT_LEN = 8;

    

    Box mainBaseBox;

    

    Box upBaseBox;

    Box upLeftVerticalBox;

    Box upRightVerticalBox;

    

    Box downBaseBox;

    JPanel downLeftJPanel;

    Box downLeftVerticalBox;

    Box downChildrenLeftHorizontalBox;    

    

    Box downRightVerticalBox;

    

    //For up

    JLabel[] label;

    String[] labelStr = {"操作数一","操作类型","操作数二","计算结果",""};

    JTextField[] textField;

    

    //For down

    String[] buttonStr = {"7","8","9","/","4","5","6","*","1","2","3","-","0",".","+","C","="};

    JButton[] btn;

    

    /* Override */

    public void actionPerformed(ActionEvent e){

        Object source = e.getSource();

        if( source instanceof JButton){

            System.out.println(((JButton)source).getText());

        }

    }

    

    /* To initialize the upBaseBox*/

    void InitializeUp(){

        //create boxes

        upBaseBox = Box.createHorizontalBox();

        upLeftVerticalBox = Box.createVerticalBox();

        upRightVerticalBox = Box.createVerticalBox();

        

        //initialize and add to box

        label = new JLabel[labelStr.length];

        for(int i=0;i<labelStr.length;i++){

            label[i] = new JLabel(labelStr[i]);

        }

        

        textField = new JTextField[3];

        for(int i=0;i<3;i++){

            textField[i] = new JTextField(16);

        }

        

        for(int i=0;i<(labelStr.length-1);i++){

                upLeftVerticalBox.add(label[i]);

                if(i != 3){

                    upLeftVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN));

                }

        }

        int posSplit = 2;

        

        upRightVerticalBox.add(textField[0]);

        upRightVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN + posSplit));

        upRightVerticalBox.add(label[labelStr.length-1]);

        upRightVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN + posSplit));

        upRightVerticalBox.add(textField[1]);

        upRightVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN + posSplit));

        upRightVerticalBox.add(textField[2]);

        

        upBaseBox.add(upLeftVerticalBox);

        upBaseBox.add(Box.createHorizontalStrut(SPLIT_LEN));

        upBaseBox.add(upRightVerticalBox);



    }

    

    /* To initialize the downBaseBox*/

    void InitializeDown(){

        //create boxes

        downBaseBox = Box.createHorizontalBox();

        

        downLeftJPanel = new JPanel();

        GridLayout gridLayout = new GridLayout(3,4,SPLIT_LEN,SPLIT_LEN);

        downLeftJPanel.setLayout(gridLayout);

        

        downLeftVerticalBox = Box.createVerticalBox();

        downChildrenLeftHorizontalBox = Box.createHorizontalBox();

        downRightVerticalBox = Box.createVerticalBox();

        

        btn = new JButton[buttonStr.length];

        int basicWidth = 15;

        int basicHeight = 30;

        for(int i=0;i<buttonStr.length;i++){

            btn[i] = new JButton(buttonStr[i]);            

            if(i < 12){

                downLeftJPanel.add(btn[i]);

                btn[i].setPreferredSize(new Dimension(basicWidth,basicHeight));

            }

            else if(i<15){

                if( 12 == i){

                    //System.out.println(i);

                    //btn[i].setSize(100,50);

                    btn[i].setPreferredSize(new Dimension(basicWidth * 2,basicHeight));

                }

                else{

                    btn[i].setPreferredSize(new Dimension(basicWidth,basicHeight));

                }

                downChildrenLeftHorizontalBox.add(btn[i]);

                if(i != 14){

                    downChildrenLeftHorizontalBox.add(Box.createHorizontalStrut(SPLIT_LEN));

                }

            }

            else{

                btn[i].setPreferredSize(new Dimension(basicWidth,basicHeight * 2));

                downRightVerticalBox.add(btn[i]);

                if(i != (buttonStr.length - 1) ){

                    downRightVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN));

                }

            }

        }

        //btn[12].setPreferredSize(new Dimension(50,50));

        //btn[12].setSize(50,50);

        

        //add to baseBox

        downLeftVerticalBox.add(downLeftJPanel);

        downLeftVerticalBox.add(Box.createVerticalStrut(SPLIT_LEN));

        downLeftVerticalBox.add(downChildrenLeftHorizontalBox);

        

        downBaseBox.add(downLeftVerticalBox);

        downBaseBox.add(Box.createHorizontalStrut(SPLIT_LEN));

        downBaseBox.add(downRightVerticalBox);        

    }

    

    /* main initialize interface */

    void Initialize(){

        InitializeUp();

        InitializeDown();

        //add Children Boxes to mainBaseBox

        

        mainBaseBox = Box.createVerticalBox();

        mainBaseBox.add(upBaseBox);

        mainBaseBox.add(Box.createVerticalStrut(SPLIT_LEN));

        mainBaseBox.add(downBaseBox);

        

        //add mainBaseBox to JPanel

        add(mainBaseBox);

    }

    

    /*Constructor*/

    CalculatorJPanel(){        

        Initialize();

        //validate();

    }    

}
View Code

 

你可能感兴趣的:(a)