티스토리 뷰

LANGUAGE/JAVA

[JAVA] GUI

진심스테이크 2018. 3. 26. 13:46

 

프레임

사용 방법 2가지

- 첫번째 방법

import java.awt.*;

public class FrameEx {
    public static void main(String[] args) {
        Frame f = new Frame();
        
        f.setTitle("Frame Text");
        f.setSize(300,300);
        f.setVisible(true);
    }
}  

 

- 두번째 방법

import java.awt.*;

public class FrameEx extends Frame {

    public FrameEx() {
        System.out.println("프레임 테스트");

        setSize(300, 300); // 프레임 크기
        setVisible(true); // 창 띄우기
    }

    public static void main(String[] args) {
        FrameEx fe = new FrameEx();
    }
}

- 기본적으로 BoarderLayout을 쓴다 

 


 

#종료를 원할 때에는 콘솔창 옆에 빨간 네모 버튼을 눌러서 종료해야 한다 

 

 


 

이벤트 처리

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class ActionEventEx extends Frame implements ActionListener, WindowListener {
    Panel p;
    Button input, exit;
    TextArea ta;

    public ActionEventEx() {
        super("ActionEvent test");
        p = new Panel();

        input = new Button("입력");
        exit = new Button("종료");
        ta = new TextArea();

        // 이벤터 소스를 리스너에 연결
        input.addActionListener(this);
        exit.addActionListener(this);

        p.add(input);
        p.add(exit);

        add(p, BorderLayout.NORTH);
        add(ta, BorderLayout.CENTER);

        setBounds(300, 300, 300, 300);
        setVisible(true);

        addWindowListener(this);
    }

    public void actionPerformed(ActionEvent ae) {
        String name;
        name = ae.getActionCommand();

        if (name.equals("입력")) {
            ta.append("버튼 입력");
        } else {
            ta.append("종료");
        }
        try {
            Thread.sleep(2000);
        } catch (Exception e) {
        }
        System.exit(0);
    }

    public static void main(String[] args) {
        new ActionEventEx();
    }

    @Override
    public void windowActivated(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void windowClosed(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void windowClosing(WindowEvent arg0) {
        // TODO Auto-generated method stub
        System.exit(0);
    }

    @Override
    public void windowDeactivated(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void windowDeiconified(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void windowIconified(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void windowOpened(WindowEvent arg0) {
        // TODO Auto-generated method stub
    }
}

 

이렇게 처리하지 않는 메소드까지도 오버라이딩 해서 처리를 해야해서 번거롭다. 그래서 Adapter 클래스를 사용하여 작업을 좀 더 쉽게 처리하게 해준다

 

Adapter 클래스

- anonymous inner 클래스 이용

 

'LANGUAGE > JAVA' 카테고리의 다른 글

[JAVA] LINKEDLIST를 이용한 성적 처리  (0) 2018.03.27
[JAVA] SYNCHRONIZED - 동기화  (0) 2018.03.27
[JAVA] INNER CLASS - 내부 클래스  (0) 2018.03.22
[JAVA] INTERFACE - 인터페이스  (0) 2018.03.22
[JAVA] STACK / QUEUE  (0) 2018.03.21
댓글