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

 

posted on 2014-10-17 07:03  COS  阅读(381)  评论(0编辑  收藏  举报