열심히 끝까지
48강 Java GUI Programming2 본문
<복습>
GUI(Graphical User Interface)
: 컴퓨터를 사용하는 사용자를 위해 만들어진
특정한 기능을 가진 그래픽 요소
JAVA GUI 프로그래밍
: 사용자가 프로그램을 쉽게 다룰 수 있도록
그래픽을 제공하도록 프로그래밍 하는 것
종류
[1] AWT : 자바에서 GUI를 프로그래밍하기 위해 처음으로 제공한 라이브러리
[2] Swing : AWT를 대체하기 위해 자바로 작성된 GUI 객체
- AWT와 Swing의 차이점 : AWT는 운영체제의 자원 활용
컴포넌트(Component)와 컨테이너(Container)
- 컴포넌트 : JAVA에서 GUI를 구성하는 요소
ex ) JButton, JCheckBox, JSlider, JTextField, JComboBox, JMenu ..
- 컨테이너 : 다른 컴포넌트를 포함할 수 있는 컴포넌트
: JFrame 과 같이 다른 컴포넌트를 포함할 수 없는 컴포넌트를
최상위 컴포넌트라고 한다.
GUI 프로그래밍 순서
1. extends JFrame
- JFrame 클래스를 상속받아, 나만의 프레임 클래스 작성
- 생성자에서 컴포넌트 및 프레임의 디자인 구현하기
2. 기본 설정 - 생성자에서 하기
: title, size, visible 설정하기
- title 설정 : setTitle("타이틀명");
- size 설정 : setSize(가로길이, 세로길이);
- visible 설정 : setVisible(true);
48-1 ) 자바에서 이벤트 처리
이벤트(Event)란?
: 프로그램을 실행하는 도중 사용자에 의해 발생하는
키보드 입력, 마우스 클릭 등의 동작
이벤트 처리란?
: 이벤트가 발생했을 때, 어떤 작업을 할 것인지 결정하는 것
[1] 이벤트 객체
: 이벤트 발생 시 이벤트에 대한 정보를 가진 객체
ex ) 이벤트의 종류, 이벤트가 발생한 위치(ex, 마우스 좌표), 체크박스의 체크 상태
[2] 이벤트 리스너
: 이벤트 객체에 의해서 호출되어 해당 이벤트를 처리하는 객체
- 이벤트 리스너 사용 시 해당 인터페이스의 추상 메서드 구현해야함
이벤트에 따른 이벤트 리스너의 종류
이벤트 종류 리스너 인터페이스 추상메서드 발생상황
Action ActionListener void actionPerformed(ActionEvent) Action이 발생 시
void KeyPressed(KeyEvent) 키가 눌려질 때
Key KeyListener void KeyReleased(KeyEvent) 눌러진 키를 땔 때
void keyTyped(KeyEvent) 유니코드 키 입력 시
void MousePressed(MouseEvent) 마우스버튼이 눌릴 때
void MouseReleased(MouseEvent) 눌린 마우스 뗄 때
Mouse MouseLisener void MouseClicked(MouseEvent) 클릭 시
void MouseEntered(MouseEvent) 마우스 포인터가 컴포넌트
위에 올라올 때
void MouseExisted(MouseEvent) 마우스 포인터가 컴포넌트를
벗어날 때
<실습>
앞에서 다루었던 예제에 이벤트 요소 넣은 코드
1) 이벤트리스너에서 이벤트 발생 시 할 작업 오버라이딩
2) Frame 작성
3) 만든 Frame 생성자 호출
<실행 결과>
-이벤트 발생 전
-이벤트 발생 후
이벤트 리스너 클래스의 구조
ActionEvent e
- 이벤트 발생 시 e 객체에 이벤트 정보가 전달
JButton button = (JButton)e.getSource();
- getSource()의 리턴타입이 Object여서 강제형변환
- e.getSource() : 현재 이벤트가 발생된 컴포넌트
button.setText("버튼 클릭");
- button.setText("문자열"); : 현재 버튼의 문자열 재지정
[3] 마우스 관련 이벤트
이벤트 종류 리스너 인터페이스 추상메서드 발생상황
Mouse MouseMotionListener void mouseDragged(MouseEvent e) 마우스가 드래그 될 때
void mouseMoved(MouseEvent e) 마우스가 움직일 때
마우스 이벤트 발생 시 얻을 수 있는 정보
메서드 메서드 활용
int getX() 현재 마우스 포인터의 X좌표
int getY() 현재 마우스 포인터의 Y좌표
short getButton() 현재 클릭한 버튼(왼쪽, 오른쪽)
int getClickCount() 마우스를 클릭한 횟수
<실습>
간단한 마우스 이벤트 처리
- 프로그래밍 및 마우스가 올라가서 빨간색으로 처리
- 마우스 나가서 노란색 처리
- 마우스 올라간 상태에서 클릭했을 때 처리
Mouse클래스의 내부 클래스로 작성
-> 멤버 변수 접근을 위해
[Menu 만들기]
메뉴바 예시?
1) JMenuBar 객체 생성
JMenuBar mb = new JMenuBar();
2) JMenu 생성
JMenu screenMenu = new JMenu("메뉴바1");
3) JMenuItem 생성
4) JMenu에 JMenuItem 추가
screenMenu.add(new JMenuItem("Load"));
5) JMenuBar에 JMenu 추가
mb.add(screenMenu);
6) 현재 프레임의 메뉴바를 생성한 JMenuBar객체로 지정
setMenuBar(mb);
<실습>
메뉴바 내에 작업창 만들고 띄우기
또다른 실습코드방법
'멘토씨리즈 JAVA' 카테고리의 다른 글
47강 Java GUI Programming (0) | 2022.05.12 |
---|---|
46강 입출력 / 자바의 IO 패키지 (0) | 2022.05.11 |
45강 입출력 / 자바의 IO 패키지 (0) | 2022.05.11 |
44강 스레드3 (0) | 2022.05.10 |
43강 스레드2 (0) | 2022.05.10 |