티스토리 뷰

프로그래밍/Java

자바(java) - 인터페이스 예제

황금비비새 2013. 7. 10. 19:31
// MyFrame.java
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame implements MouseListener{
    JButton[] bt;           // 버튼선언
    JButton bt_randReset;   // 리셋버튼
    JPanel panel;           // 패널선언
    RandNumGame rng;        // 랜덤숫자게임 선언
    public MyFrame() {
        
        bt = new JButton[5];     // 버튼배열 생성
        panel = new JPanel();    // 패널 생성
        rng = new RandNumGame(); // 랜덤숫자게임 생성
        // 버튼생성, 패널에 추가
        for(int i=0; i < bt.length; i++){
            bt[i] = new JButton(Integer.toString(i+1)); // 버튼생성
            bt[i].addMouseListener(this);               // 버튼리스너 생성
            panel.add(bt[i]);                           // 패널에 버튼 추가
        }
        bt_randReset = new JButton("리셋");     // 리셋버튼생성
        bt_randReset.addMouseListener(this);    // 리셋버튼리스너 생성
        
        panel.add(bt_randReset);                
        
        this.add(panel, BorderLayout.NORTH);           // 현재 창에 패널추가
        this.addWindowListener(new MyWindowListener());// 현재 창에 window이벤트 감지자 등록

        
        setBounds(300, 100, 400, 100);  // setLocation과 setSize를 합친것! 위치, 사이즈 설정
        setVisible(true);               // 창 출력
    }
    
    public static void main(String[] args) {
        new MyFrame();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        String titleText = "리셋";
        Object obj = e.getSource(); // 이벤트를 유발(발생)시킨 객체를 가져온다!
        // Why? 버튼 구분을 하기 위해
        
        if(obj == bt[0]){
            titleText = rng.retChoiceResult(1);
        }else if(obj == bt[1]){
            titleText = rng.retChoiceResult(2);
        }else if(obj == bt[2]){
            titleText = rng.retChoiceResult(3);
        }else if(obj == bt[3]){
            titleText = rng.retChoiceResult(4);
        }else if(obj == bt[4]){
            titleText = rng.retChoiceResult(5);
        }else if(obj == bt_randReset){
            rng.resetRandNum();
        }
        
        this.setTitle(titleText);
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }

    @Override
    public void mouseEntered(MouseEvent e) {
    }
    
    @Override
    public void mouseExited(MouseEvent e) {
    }

}



// RandNumGame.java
public class RandNumGame {
    int range = 5;  // 난수 범위
    int rand;       // 난수 저장
    
    public RandNumGame() {
        resetRandNum(); // 난수값 생성하여 rand에 저장
    }
    
    public String retChoiceResult(int n){
        // 입력한 숫자와 랜덤값을 
        String str = null;
        if(rand > n){
            str = "그것보다 큽니다.";
        }else if(rand < n){
            str = "그것보다 작습니다.";
        }else
            str = "맞췄습니다.";
        
        return str;
    }
    public void resetRandNum(){
        rand = (int)(Math.random()*range+1);
    }
    
}



// MyWindowListener.java
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class MyWindowListener implements WindowListener{

    @Override
    public void windowOpened(WindowEvent e) {
    }

    @Override
    public void windowClosing(WindowEvent e) {  // 창을 종료 했을때.
        System.exit(0); // 프로그램을 종료 시킨다.
    }

    @Override
    public void windowClosed(WindowEvent e) {
    }

    @Override
    public void windowIconified(WindowEvent e) {
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
    }

    @Override
    public void windowActivated(WindowEvent e) {
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
    }
    
}


'프로그래밍 > Java' 카테고리의 다른 글

자바(java) - 다형성  (0) 2013.07.10
자바(java) - 내부 클래스(Inner class)  (0) 2013.07.09
자바(java) - super와 super()  (0) 2013.07.09
자바(java) - 오버라이딩(Overriding)  (0) 2013.07.09
자바(java) - 클래스 상속  (0) 2013.07.09
댓글