Chapter 13 GUI 프로그래밍 01 GUI 화면 구성 02 GUI 이벤트 처리 03 GUI 메뉴와 툴바 예제 모음 요약 연습문제
GUI 환경에서 프로그램 작성하는 방법 알아보기 .
Section 01 GUI 화면 구성(1) 기본 GUI 화면 GUI : graphic user interface의 약자로 TUI(text user interface)와 반대 개념 GUI 응용 프로그램은 키보드뿐 아니라 마우스 사용 지원, 화려하고 다양한 화면과 더불어 사용자가 자유롭게 화면 작동 가능 기본 GUI 화면 AWT와 스윙 JAVA는 GUI 응용 프로그램 작성을 지원하기 위해 AWT(Abstract Windowsing Toolkit)와 스윙(Swing) 라이브러리를 제공. AWT는 초창기 JAVA부터 제공, 오래되었기 때문에 성능이나 화면 출력 등이 운영체제마다 다르게 나옴. 이를 개선한 것이 스윙, 모든 운영체제에 통일된 화면 제공, AWT보다 좋음. 현재는 대부분 스윙 라이브러리 사용하여 GUI 프로그래밍 제작.
Section 01 GUI 화면 구성(2) 기본 GUI 화면 만들기 기본적인 Windows 화면 만들기
Section 01 GUI 화면 구성(3)
Section 01 GUI 화면 구성(4) 레이아웃 레이아웃의 종류(컴포넌트의 배치를 레이아웃이라고 함) Windows 레이아웃 설정 형식
Section 01 GUI 화면 구성(5) FlowLayout 형식
Section 01 GUI 화면 구성(6)
Section 01 GUI 화면 구성(7)
Section 01 GUI 화면 구성(8)
Section 01 GUI 화면 구성(9) BorderLayout 형식 위치 지정 방법
Section 01 GUI 화면 구성(10)
Section 01 GUI 화면 구성(11)
Section 01 GUI 화면 구성(12) GridLayout 형식
Section 01 GUI 화면 구성(13)
Section 01 GUI 화면 구성(14)
Section 01 GUI 화면 구성(15) CardLayout 형식
Section 01 GUI 화면 구성(16)
Section 01 GUI 화면 구성(17)
Section 01 GUI 화면 구성(18) 레이아웃이 없는 경우 형식 컴포넌트 절대 위치 지정(각 컴포넌트의 시작X, 시작Y, 폭, 높이 setBounds( ) 메소드로 지정) 예
Section 01 GUI 화면 구성(19)
Section 01 GUI 화면 구성(20)
Section 01 GUI 화면 구성(21) 컴포넌트 (버튼, 레이블, 체크박스 등을 통틀어서 컴포넌트라고 하는 함) 스윙 컴포넌트 상속 구조 스윙에서 제공되는 컴포넌트는 JComponent의 상속 받는 구조.
Section 01 GUI 화면 구성(22) JComponent의 메소드
Section 01 GUI 화면 구성(23)
Section 01 GUI 화면 구성(24)
Section 01 GUI 화면 구성(25)
Section 01 GUI 화면 구성(26)
저자 한마디 페인 [실습 13-7]의 10행에서 Container 형식의 인스턴스 변수 c를 JFrame(= this)의 getContentPane( ) 메소드로 추출 사용. 이것을 페인(pane)이라고 부름, 이는 JFrame 위에 살짝 덮인 유리판의 개념으로, 페인을 사용한 이유는 11행에서 바탕화면의 색상을 노란색으로 변경하기 위함. 이렇게 구한 페인은 JFrame을 의미하는 this 대신 사용 가능. 즉 13행이나 18행을 다음과 같이 수정해도 됨. c.setLayout(new FlowLayout());c.add(btn1);프로그래머에 따라서 페인을 구해 사용하기도 하고, 직접 JFrame(= this)을 사용하기도 하므로 기억해 두는 것이 좋다.
Section 01 GUI 화면 구성(27) AbstractButton 서브 클래스로 JToggleButton, JButton, JCheckBox, 1JRadioButton이 있음 이미지 사용 문법 형식
Section 01 GUI 화면 구성(28)
Section 01 GUI 화면 구성(29)
Section 01 GUI 화면 구성(30)
Section 01 GUI 화면 구성(31) JTextComponent 서브 클래스로 JTextField, JTextArea, JPasswordField가 있음 JTextField는 한 줄 문자열 입력, JTextArea는 여러 줄 문자열 입력, JPasswordField는 비밀번호 입력
Section 01 GUI 화면 구성(32)
Section 01 GUI 화면 구성(33)
Section 01 GUI 화면 구성(34) JList, JComboBox JList와 JComboBox는 여러 개의 목록 중에서 선택 기능 , JList는 하나 이상 선택 가능 JComboBox는 하나만 선택 가능. 두 컴포넌트 모두 여러 개의 목록이 필요 형식
Section 01 GUI 화면 구성(35)
Section 01 GUI 화면 구성(36)
Section 02 GUI 이벤트 처리(1) 이벤트 처리의 기본 이벤트(event) : 마우스로 클릭하거나 키보드로 누르는 일련의 모든 작동. 리스너(listener) : 사용자가 마우스를 클릭하거나 키보드를 누를 때까지 기다리는 것
Section 02 GUI 이벤트 처리(2) 버튼이 눌리는 이벤트
Section 02 GUI 이벤트 처리(3)
저자 한마디 리스너 인터페이스 JAVA는 리스너 인터페이스 제공. 인터페이스는 실제 내용이 없고 반드시 implements로 상속받아 추상 메소드 완성해서 사용해야 함 액션 리스너의 형태 형태 [실습 13-11] 14~18행 다음과 같이 작성해도 됨
Section 02 GUI 이벤트 처리(4) 이벤트의 종류
Section 02 GUI 이벤트 처리(5) 마우스 이벤트 마우스와 관련된 MouseEvent는 MouseListener 인터페이스 사용. MouseListener 인터페이스는 mousePressed( ), mouseReleased( ), mouseClicked( ), mouseEntered( ), mouseExited( ) 등 5개의 추상 메소드를 갖음
Section 02 GUI 이벤트 처리(6)
Section 02 GUI 이벤트 처리(7)
Section 02 GUI 이벤트 처리(8) 키보드 이벤트 키보드와 관련된 KeyEvent는 KeyAdapter 클래스 사용 KeyAdapter 클래스는 keyPressed( ), keyReleased( ), keyTyped( ) 등 3개의 메소드를 갖는데 이 메소드를 오버라이딩해서 사용
Section 02 GUI 이벤트 처리(9)
Section 02 GUI 이벤트 처리(10)
Section 02 GUI 이벤트 처리(11)
Section 03 GUI 메뉴와 툴바(1) 메뉴 메뉴에서 사용되는 클래스는 JMenuBar, JMenu, JMenuItem이 있음. ❶ JMenuBar 만들고, 필요한 만큼 상위 메뉴에 해당하는 ❷ JMenu(File, Edit 등) 추가, 각 JMenu에 항목인 ❸ JMenuItem 추가. 메뉴 클릭하면 작동하는 코드는 JMenuItem 에 코딩
Section 03 GUI 메뉴와 툴바(2) 코딩 순서
Section 03 GUI 메뉴와 툴바(3)
Section 03 GUI 메뉴와 툴바(4)
Section 03 GUI 메뉴와 툴바(5)
Section 03 GUI 메뉴와 툴바(6)
Section 03 GUI 메뉴와 툴바(7) 툴바 메뉴와 비슷하지만 좀 더 간단. 메뉴는 JMenuBar, JMenu, JMenuItem, 세 단계 툴바는 JToolBar와 아이템, 두 단계 ❶ JToolBar 만들고, 필요한 만큼 ❷ 아이템(버튼, 텍스트 필드 등) 추가. 최종적으로 툴바의 아이템을 클릭하면 실제 작동하는 코드는 컴포넌트 부분에 코딩
Section 03 GUI 메뉴와 툴바(8) 코딩 순서
Section 03 GUI 메뉴와 툴바(9)
Section 03 GUI 메뉴와 툴바(10)
Section 03 GUI 메뉴와 툴바(11)