• 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
  • 相关阅读:
    CSUST 8.4 早训
    CSUST 8.5 早训
    hdu1542 Atlantis 线段树--扫描线求面积并
    hdu1540 Tunnel Warfare 线段树/树状数组
    hdu1535 Invitation Cards 最短路
    hdu1358 Period KMP
    SQL Server 向数据库中创建表并添加数据
    初次实践数据库--SQL Server2016
    hdu1301 Jungle Roads 最小生成树
    hdu1281 棋盘游戏 二分图最大匹配
  • 原文地址:https://www.cnblogs.com/wintergrass/p/4030119.html
Copyright © 2020-2023  润新知