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(); } }