package geg;

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
 
 
public class Calc extends JFrame { 
  
 JLabel resultlabel;  //계선결과출력부분
   
public static void main(String[] args) { 
        new Calc(); 
    } 
 
    public Calc() { 
        super("자바 텀프로젝트 계산기"); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        JButton bNum[] = new JButton[10]; // 숫자버튼  컴퍼넌트를생성
      
        resultlabel = new JLabel("0", JLabel.RIGHT); 
        add(resultlabel, BorderLayout.NORTH);  // 계산창을보여준다
        JPanel p = new JPanel(new GridLayout(4,4,5,5));  // 열,행,열사이의거리,행사이의거리
        add(p, BorderLayout.CENTER);  //계산기의몸체
       
        plus = new JButton("+"); 
        minus = new JButton("-"); 
        multi = new JButton("*"); 
        div = new JButton("/");
        equal = new JButton("="); 
        clear = new JButton("C"); 
 
        setSize(300,230);
        setVisible(true);
      
          int i; 
        for( i=0;i<bNum.length;i++ ) { 
           bNum[i] = new JButton(Integer.toString(i)); 
        } 
 
        p.add(bNum[7]); p.add(bNum[8]); p.add(bNum[9]); p.add(plus); 
       p.add(bNum[4]); p.add(bNum[5]); p.add(bNum[6]); p.add(minus); 
        p.add(bNum[1]); p.add(bNum[2]); p.add(bNum[3]); p.add(multi); 
        p.add(bNum[0]); p.add(equal); p.add(clear); p.add(div);
 
       NumberHandler nh = new NumberHandler(); 
       for( i=0;i<bNum.length;i++ ) { 
            bNum[i].addActionListener(nh); 
        } 
 
        CalcHandler ch = new CalcHandler(); 
        plus.addActionListener(ch); 
        minus.addActionListener(ch); 
        multi.addActionListener(ch); 
        div.addActionListener(ch); 
       equal.addActionListener(ch); 
       clear.addActionListener(ch); 
    

      


        setVisible(true); 
    } 

    String presentValue;   // 현재입력중인숫자
    int resultValue;   // 중간계산 결과
   char lastValue;   // 이전 선택한 연산자
   JButton plus, minus, multi, div, equal, clear ; // 연산버튼 
  
    // 숫자버튼 이벤트 처리
    class NumberHandler implements ActionListener { 
       public void actionPerformed(ActionEvent e) {  //버튼클릭시발동되는메소드
            String s = e.getActionCommand(); 
            if(presentValue == null) { 
                if( s.equals("0")) return ; // 첫자리가 0이면 무시
              else presentValue = new String();  //첫자리이면 스트링 객체생성
            } 
            if( presentValue.length() >= 9) return;  // 9자리 넘으면 무시
            presentValue += s;  // 두번째 이후이면 누른 숫자 덧붙이기
            resultlabel.setText(presentValue);  //현재숫자화면에 표시
       } 
    } 
//기타계산버튼의이벤트처리 
    class CalcHandler implements ActionListener { 
        public void actionPerformed(ActionEvent e) { 
           JButton source = (JButton)e.getSource(); 
            int value; 
 // 지우기
            if( source == clear ) { 
             resultlabel.setText("0");  //화면및 각변수 초기화
             presentValue = null;  //String 타입의 현재 숫자
             lastValue = 0;  // char 타입의 마지막 연산자
                resultValue = 0;  // int 타입의 중간계산 결과
               return ; 
            } 
 
           if( presentValue != null ) {  // 현재값과 널값이 같지않다면 값을출력
               value = Integer.parseInt(presentValue); 
                switch(lastValue) { 
                    case '+': resultValue += value; break; 
                    case '-': resultValue -= value; break; 
                    case '*': resultValue *= value; break; 
                   case '/': resultValue/= value; break; 
                    default : resultValue = value; break; 
              } 
                resultlabel.setText(Integer.toString(resultValue)); 
            } 
           presentValue = null; 
           lastValue = source.getText().charAt(0); 
        } 
    } 

 

    JButton source = (JButton)e.getSource(); 

 

String s = e.getActionCommand(); 

이 두문장의 뜻좀알려주세요 ㅜㅜㅜ

 

 

이소스의 전체적인흐름도좀알려주시면감사하겠습니다.

 

 

공부중인데 어렵네요.. ㅜㅜ