레이아웃 관리자 스윙 구성요소 비트박스 프로그램

Slides:



Advertisements
Similar presentations
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Advertisements

Chap02 자바환경과 자바 프로그램 Section 1 : 자바 개발 환경 Section 2 : 자바 통합 환경 Section 3 : 자바 응용 프로그램과 애플릿 프로그램 Section 4 : 자바 응용 프로그램 Section 5 : 자바 애플릿 프로그램.
제 8 장 그래픽 사용자 인터페이스 어서와 Java 는 처음이지 !. 그래픽 사용자 인터페이스 (Graphical User Interface, 간단히 GUI) 는 컴포넌트들로 구성된다.
자바 5.0 프로그래밍.
명품 JAVA Programming 제 9 장 자바의 GUI, AWT와 Swing.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
12. GUI – 그래픽 이야기.
명품 JAVA Essential.
어서와 Java는 처음이지! 제12장 스윙 컴포넌트.
명품 JAVA Programming 제 11 장 스윙 컴포넌트와 이벤트 핸들링.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
제 12일 그래픽사용자인터페이스 (Graphic User Interface)
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
9장. 스윙 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
Java 16장. 스윙 public class SumTest {
7장 배열 ②.
7장 배열 ③.
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
명품 JAVA Programming.
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
Kim heesang JDBC Programming 2 Kim heesang
제 4 장 클래스 작성 Lab 4- 2.
9장 AWT(1).
Lesson 12. 사용자 인터페이스(AWT) - 1
Power Java 제4장 자바 프로그래밍 기초.
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
어서와 Java는 처음이지! 제8장 그래픽 사용자 인터페이스.
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
Chapter 12. Awt와 Swing Chapter 13. 배치 관리자 Chapter 14. 이벤트 관리자
Java로 배우는 디자인패턴 입문 Chapter 22. Command 명령을 클래스로 만든다
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
목 차 1. swing component 특징 및 관련 packages
Java Seminar Chapter 4.
9장 다형성 Lab 9-2.
10장 예외 Lab 10-2.
5장 조건과 반복 ③.
명품 JAVA Essential.
Hadoop 김연왕
메모장 구동.
9장 AWT(1).
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
제 9주 이벤트 처리 그래픽프로그래밍1 제 9주 강의 목표
그래픽 사용자 인터페이스와 사건처리.
제 4주 – 클래스 설계 제 4주 목표 클래스를 구현하는 법을 배운다. 변수 선언 메소드 구현 구성자 객체지향프로그래밍
날짜: 팀명: TEAM-SIX 발표자: 이기영
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
JAVA WINDOW PROGRAMMING
JA A V W. 04.
Mariadb JDBC PROGRAMMING2
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Chapter 4 클래스 작성.
5장 조건과 반복 ③.
Chapter2 : 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합개발환경(IDE)
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

레이아웃 관리자 스윙 구성요소 비트박스 프로그램 13장. 스윙 사용 방법 레이아웃 관리자 스윙 구성요소 비트박스 프로그램

스윙을 알아봅시다

스윙 구성요소 구성요소(Component) 위젯(widget)이라고도 부름 GUI에 집어넣는 모든 것 텍스트 필드, 버튼, 스크롤 목록, 라디오 버튼 등 javax.swing.JComponent의 하위클래스 대화형 구성요소, 배경 구성요소로 나뉨 JButton JFrame JPanel JCheckBox JTextField

레이아웃 관리자 레이아웃 관리자(layout manager) 특별한 구성요소와 연관된 객체 구성요소 내부에 들어있는 구성요소들을 제어함 각 배경 구성요소마다 레이아웃 관리자가 있음 종류에 따라 다른 정책을 사용함 JPanel panelA = new JPanel(); JPanel panelB = new JPanel(); panelB.add(new JButton(“button 1”)); panelB.add(new JButton(“button 2”)); panelB.add(new JButton(“button 3”)); panelA.add(panelB); button 1 button 2 다중 레이아웃 button 3

배치 과정 패널을 만들고 버튼 추가 각 버튼의 크기 확인 (패널 레이아웃 관리자) 크기 수락 여부 결정 (패널 레이아웃 관리자) 패널을 프레임에 추가 패널의 크기 확인 (프레임 레이아웃 관리자) 크기 수락 여부 결정 (프레임 레이아웃 관리자)

대표적인 레이아웃 관리자 BorderLayout FlowLayout BoxLayout 다섯 개의 지역 각 지역마다 하나씩의 구성요소가 들어감 프레임의 기본 레이아웃 관리자 FlowLayout 왼쪽맞춤 형태로 왼쪽에서 오른쪽으로, 위에서 아래로 배치됨 패널의 기본 레이아웃 관리자 BoxLayout 수직 또는 수평 방향으로 배치

418~421 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다. BorderLayout 북쪽(NORTH) 서쪽 (WEST) 중앙 (CENTER) 동쪽 (EAST) 남쪽(SOUTH) 418~421 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다. import javax.swing.*; import java.awt.*; public class Button1 { public static void main(String[] args) { Button1 gui = new Button1(); gui.go(); } public void go() { JFrame frame = new JFrame(); JButton button = new JButton(“click me”); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(BorderLayout.EAST, button); frame.setSize(200, 200); frame.setVisible(true);

422~424 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다. FlowLayout 워드프로세처럼 왼쪽에서 오른쪽으로, 위에서 아래로 추가된 순서대로 배치 import javax.swing.*; import java.awt.*; public class Panel1 { public static void main(String[] args) { Panel1 gui = new Panel1(); gui.go(); } public void go() { JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.setBackground(Color.darkGray); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(BorderLayout.EAST, panel); frame.setSize(200, 200); frame.setVisible(true); 422~424 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.

425 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다. BoxLayout 수직 방향으로 추가된 순서대로 배치 425 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.

바보 같은 질문은 없습니다 왜 패널에 하는 것처럼 프레임에 바로 위젯을 추가하지 않나요? JFrame은 화면에 뭔가를 표시하기 위한 받침대 역할을 합니다. 다른 스윙 구성요소는 순수한 자바로 만들어져 있지만 JFrame은 디스플레이를 직접 접근해야 하므로 원시 코드를 사용합니다. JFrame은 창틀, 내용 틀은 그 안에 들어가는 유리라고 생각하면 됩니다. myFrame.setContentPane(myPanel);

바보 같은 질문은 없습니다 프레임의 레이아웃 관리자를 바꿀 수 있나요? 프레임에서 BorderLayout 대신 FlowLayout을 쓰려면 어떻게 해야 하나요? 가장 쉬운 방법은 패널을 만들고 패널 안에 원하는 GUI를 만든 다음 앞에 나온 것과 같은 코드를 써서 그 패널을 프레임의 내용 틀로 만드는 방법입니다.

바보 같은 질문은 없습니다 레이아웃 관리자를 쓰지 않는 방법은 없나요? 구성요소마다 setLayout(null)을 호출하고 정확한 위치와 크기를 직접 지정해도 됩니다. 장기적인 관점에서 볼 때 레이아웃 관리자를 사용하는 편이 훨씬 쉽습니다.

JTextField JTextField JTextField field = new JTextField(20); JTextField field = new JTextField(“Your name”); System.out.println(field.getText()); field.setText(“whatever”); field.setText(“”); field.addActionListener(myActionListener); field.selectAll(); field.requestFocus(); 이제 몇 가지 대표적인 스윙 구성요소에 대해 알아보도록 하겠습니다. 여기에서 알아볼 구성요소로는 텍스트 필드인 JTextField, 스크롤 텍스트 영역인 JTextArea, 체크상자인 JCheckBox, 목록인 JList가 있습니다. 이 외에도 매우 다양한 구성요소가 있는데, javax.swing.JComponent의 하위클래스를 훑어보면 각각의 기능과 사용 방법을 알 수 있을 것입니다.

429 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다. JTextArea JTextArea JTextArea text = new JTextArea(10, 20); JScrollPane scrollbar = new JScrollPane(text); text.setLineWrap(true); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORITONTAL_SCROLLBAR_NEVER); panel.add(scroller); text.setText(“새로 넣을 내용”); text.append(“button clicked”); text.selectAll(); text.requestFocus(); 429 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.

JCheckBox JCheckBox JCheckBox check = new JCheckBox(“Goes to 11”); check.addItemListener(this); public void itemStateChanged(ItemEvent ev) { String onOrOff = “off”; if (Check.isSelected()) onOrOff = “on”; System.out.println(“Check box is “ + onOrOff); } check.setSelected(true); check.setSelected(false);

JList JList String[] listEntries = {“alpha”, “beta”, “gamma”, “delta”, “epsilon”, “zeta”, “eta”, “theta”}; list = new JList(listEntries); JScrollPane scroller = new JScrollPane(list); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); panel.add(scroller); list.setVisibleRowcount(4);

JList JList list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.addListSectionListener(this); public void valueChanged(ListSelectionEvent lse) { if (!lse.getValueIsAdjusting()) { String selection = (String) list.getSelectedValue(); System.out.println(selection); }

비트박스 프로그램

비트박스 프로그램 코드를 직접 입력해서 실행해봅시다. 256개의 체크상자, 16개의 레이블, 네 개의 버튼이 있는 GUI를 만듭니다. 네 개의 버튼에 대해 ActionListener를 만듭니다. 미디 시스템 설정 (자바 5.0에서 새로 추가된 setLoopCount() 메소드 사용) Start 버튼을 누르면 buildTrackAndStart() 메소드가 실행되면서 256개의 체크박스를 확인하고 미디 트랙을 구축하여 연주를 시작합니다. 사용자가 Stop을 누를 때까지 연주는 계속됩니다. 코드를 직접 입력해서 실행해봅시다.

숙제 본문을 꼼꼼하게 읽어봅시다. 실행할 수 있는 코드는 전부 컴파일해서 실행시키고 조금씩 고쳐봅시다. 모든 연습문제를 자기 힘으로 해결해봅시다. API 문서에서 이 장에 나와있는 클래스 및 메소드에 대한 내용을 찾아봅시다. 비트박스 프로그램에 clear 버튼을 추가해봅시다. clear 버튼을 클릭하면 연주 중이라면 자동으로 연주를 중단하고 체크박스를 전부 체크되지 않은 상태로 되도록 만들어봅시다.