Download presentation
Presentation is loading. Please wait.
1
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
13장. 스윙 사용 방법 레이아웃 관리자 스윙 구성요소 비트박스 프로그램
2
스윙을 알아봅시다
3
스윙 구성요소 구성요소(Component) 위젯(widget)이라고도 부름 GUI에 집어넣는 모든 것
텍스트 필드, 버튼, 스크롤 목록, 라디오 버튼 등 javax.swing.JComponent의 하위클래스 대화형 구성요소, 배경 구성요소로 나뉨 JButton JFrame JPanel JCheckBox JTextField
4
레이아웃 관리자 레이아웃 관리자(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
5
배치 과정 패널을 만들고 버튼 추가 각 버튼의 크기 확인 (패널 레이아웃 관리자)
크기 수락 여부 결정 (패널 레이아웃 관리자) 패널을 프레임에 추가 패널의 크기 확인 (프레임 레이아웃 관리자) 크기 수락 여부 결정 (프레임 레이아웃 관리자)
6
대표적인 레이아웃 관리자 BorderLayout FlowLayout BoxLayout 다섯 개의 지역
각 지역마다 하나씩의 구성요소가 들어감 프레임의 기본 레이아웃 관리자 FlowLayout 왼쪽맞춤 형태로 왼쪽에서 오른쪽으로, 위에서 아래로 배치됨 패널의 기본 레이아웃 관리자 BoxLayout 수직 또는 수평 방향으로 배치
7
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);
8
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 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.
9
425 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.
BoxLayout 수직 방향으로 추가된 순서대로 배치 425 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.
10
바보 같은 질문은 없습니다 왜 패널에 하는 것처럼 프레임에 바로 위젯을 추가하지 않나요?
JFrame은 화면에 뭔가를 표시하기 위한 받침대 역할을 합니다. 다른 스윙 구성요소는 순수한 자바로 만들어져 있지만 JFrame은 디스플레이를 직접 접근해야 하므로 원시 코드를 사용합니다. JFrame은 창틀, 내용 틀은 그 안에 들어가는 유리라고 생각하면 됩니다. myFrame.setContentPane(myPanel);
11
바보 같은 질문은 없습니다 프레임의 레이아웃 관리자를 바꿀 수 있나요? 프레임에서 BorderLayout 대신 FlowLayout을 쓰려면 어떻게 해야 하나요? 가장 쉬운 방법은 패널을 만들고 패널 안에 원하는 GUI를 만든 다음 앞에 나온 것과 같은 코드를 써서 그 패널을 프레임의 내용 틀로 만드는 방법입니다.
12
바보 같은 질문은 없습니다 레이아웃 관리자를 쓰지 않는 방법은 없나요?
구성요소마다 setLayout(null)을 호출하고 정확한 위치와 크기를 직접 지정해도 됩니다. 장기적인 관점에서 볼 때 레이아웃 관리자를 사용하는 편이 훨씬 쉽습니다.
13
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의 하위클래스를 훑어보면 각각의 기능과 사용 방법을 알 수 있을 것입니다.
14
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 페이지에 나와있는 코드를 직접 입력해서 실행해봅시다.
15
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);
16
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);
17
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); }
18
비트박스 프로그램
19
비트박스 프로그램 코드를 직접 입력해서 실행해봅시다.
256개의 체크상자, 16개의 레이블, 네 개의 버튼이 있는 GUI를 만듭니다. 네 개의 버튼에 대해 ActionListener를 만듭니다. 미디 시스템 설정 (자바 5.0에서 새로 추가된 setLoopCount() 메소드 사용) Start 버튼을 누르면 buildTrackAndStart() 메소드가 실행되면서 256개의 체크박스를 확인하고 미디 트랙을 구축하여 연주를 시작합니다. 사용자가 Stop을 누를 때까지 연주는 계속됩니다. 코드를 직접 입력해서 실행해봅시다.
20
숙제 본문을 꼼꼼하게 읽어봅시다. 실행할 수 있는 코드는 전부 컴파일해서 실행시키고 조금씩 고쳐봅시다.
모든 연습문제를 자기 힘으로 해결해봅시다. API 문서에서 이 장에 나와있는 클래스 및 메소드에 대한 내용을 찾아봅시다. 비트박스 프로그램에 clear 버튼을 추가해봅시다. clear 버튼을 클릭하면 연주 중이라면 자동으로 연주를 중단하고 체크박스를 전부 체크되지 않은 상태로 되도록 만들어봅시다.
Similar presentations