자바 gui 계산기 애플 릿 구현

8881 단어 자바계산기
본 논문 의 사례 는 자바 gui 가 계산기 애플 릿 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
잔말 말고 코드 를 붙 이 고 상세 한 주석 이 있 습 니 다.저도 GUI 를 배 운 지 얼마 되 지 않 았 습 니 다.
이것 은 효과 그림 입 니 다:

코드:

package gui;
 
 
/**
 *        
 **/
import java.awt.*;      //     java gui           
import java.awt.event.*;      //           
import java.util.Stack;        //    ,         
 
 
public class Calculator extends Frame implements ActionListener{
    /**  
     *          Calculator ,    Frame  ,   ActionListener      
     **/
    
 
 private static final long serialVersionUID = 1L;  //                
 int frame_width = 1000,frame_height = 400;  //          
 Panel panel_textfield,panel_number,panel_op,panel_other;  //                  ,            ,           ,                   ,      panel  
 Button [] number_buttons;  //       (          )  
 Button [] op_buttons;      //        (          )  
 TextField textfield;        //      
 
        public Calculator() {
  super("   ");    //            ,                  (          )          
  init();       //            
  setLayout();   //          
  setBackground();       //      
  setBounds();         //       
  setFonts();          //      
  addButtons();      //     
  textfield.setEditable(false);    //              ,           */
  addWindowListener  //          ,               ,      ide           
        (
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
  setVisible(true);   //        ,          ...        ,      ,
                              ,         .... 
  
 }
 
        public void init() {      
  panel_textfield = new Panel();         //      panel 
  panel_number = new Panel();            //      panel 
  panel_op = new Panel();                //      panel 
  panel_other = new Panel();             //      panel  
  textfield = new TextField(frame_width);//             
  setResizable(false);                   //                
  
  add(panel_textfield);                 //             
  add(panel_other);                     //             
  
  panel_textfield.add(textfield);       //               
  panel_other.add(panel_number);        //                 
  panel_other.add(panel_op);            //                  
 }
 

public void setLayout() {
  setLayout(new GridLayout(2,1,4,4));       //              ,2*1   ,       4     
  panel_textfield.setLayout(null);       //           ,    null  
  panel_other.setLayout(new GridLayout(1,2,4,4));  //                       ,    1*2       ,  4     
  panel_number.setLayout(new GridLayout(5,3,4,4));  //          5*3       
  panel_op.setLayout(new GridLayout(3,1,4,4));  //        3*1         
 }
 
 
        public void setBackground() {  //     ,      ....
  panel_textfield.setBackground(Color.red);  
  panel_number.setBackground(Color.green);
  panel_op.setBackground(Color.blue);
 }
 
 
        public void setBounds() {   //       ,      .... 
  setBounds(0, 0, frame_width, frame_height);
  textfield.setBounds(0, 0, frame_width, frame_height / 2);
 }
 
 
        public void addButtons() {
  String [] titles1 = {"/", "*", "-",   //       label  
       "7", "8", "9",
       "4", "5", "6",
       "1", "2", "3",
       "0", ".", "c"};
  String [] titles2 = {"x", "+", "="};   //        label   
  number_buttons = new Button[15];   //   15       
  op_buttons = new Button[3];        //   3       
  
  for(int i = 0; i < this.number_buttons.length; i++) {
   number_buttons[i] = new Button(titles1[i]);
   panel_number.add(number_buttons[i]);  //             
   number_buttons[i].addActionListener(this);  //         ,     this,        actionPerformed()  ,         
  }
  
  for(int i = 0; i < this.op_buttons.length; i++) {
   op_buttons[i] = new Button(titles2[i]);   //           
   panel_op.add(this.op_buttons[i]);
   op_buttons[i].addActionListener(this);   //         ,     this,        actionPerformed()  ,         
  }
  
 }
 
 
@Override   //  ActionListener           
 public void actionPerformed(ActionEvent e) {
  Button button = (Button) e.getSource();   //       
 
  /**
   *            ,      
   **/
  for(int i = 0; i < 14; i++) { 
   if(button == number_buttons[i] || button == op_buttons[1]) {
    textfield.setText(textfield.getText() + button.getLabel());
    return;
   }
  }
  
  /**
   *    c,   
   **/
  if(button == number_buttons[14]) {
   textfield.setText("");
   return;
  }
  
  /**
   *         ,           
   **/
  if(button == op_buttons[0]) {
   String s = textfield.getText();
   if(s.length() > 0)
    textfield.setText(s.substring(0, s.length() - 1));
   return;
  }
  
  
  /**
   *    =,     
   **/
  if(button == op_buttons[2]) {
   textfield.setText(getResult());
   return;
  }
 }
 
 
 public String getResult() {
  
  /**
   *     
   **/
  String s = textfield.getText();   //          
  String num = "";
  Stack<Double> nums = new Stack<Double>();
  Stack<String> ops = new Stack<String>();
  
  /**
   *   regex         ,           
   **/
  for(int i = 0; i < s.length(); i++) {
   String temp = s.charAt(i) + "";
   if(temp.matches("[0-9]") || temp.matches("[.]")) {
    num += temp;
   }
   else if(temp.matches("[*+]") || temp.matches("[-]") | temp.matches("[/]")) {
    if(!num.equals(""))
     nums.push(Double.parseDouble(num));
    if(ops.isEmpty() || cmpLevel(temp,ops.peek())) {
     ops.push(temp);
    }
    else {
     Double num1 = nums.pop();
     Double num2 = nums.pop();
     String op2 = ops.pop();
     nums.push(compute(num2,num1,op2));
     i--;
    } 
    num = "";
   }
  }
 
  while(!ops.isEmpty()) {
   
   if(!num.equals("")) {
    nums.push(compute(nums.pop(),Double.parseDouble(num),ops.pop()));
    num = "";
   }
   else {
    Double num1 = nums.pop();
    Double num2 = nums.pop();
    nums.push(compute(num2,num1,ops.pop()));
   }
   
  }
  return nums.pop().toString();
 }
 
  /**  
   *                 ,       
   ** /
    public Double compute(double num1,double num2,String op) {
  if(op.equals("+")) {
   return num1 + num2;
  }
  else if(op.equals("-")) {
   return num1 - num2;
  }
  else if(op.equals("*")) {
   return num1 * num2;
  }
  else
   return num1 / num2;
 }
 
 /**
  *               
  **/
 public boolean cmpLevel(String s1,String s2) {
  if(s1.equals("+") || s1.equals("-")) {
   return false;
  }
  else {
   if(s2.equals("+") || s2.equals("-"))
    return true;
   return false;
  }
 }
 
 /**  
  *            
  **/
 public void setFonts() {
  panel_number.setFont(new Font("    ",Font.PLAIN,24));
  panel_op.setFont(new Font("    ",Font.PLAIN,24));
  panel_other.setFont(new Font("    ",Font.PLAIN,24));
  textfield.setFont(new Font("    ",Font.PLAIN,48));
 }
 
 /**
  *  main    
  **/
 public static void main(String [] args) {
  new Calculator();
 }
 
}
계산기 에 관 한 멋 진 글 은 보 세 요《계산기 특집》.더 많은 멋 진 것 을 발견 하 기 를 기다 리 겠 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기