JAVA Programming 1 9 GUI AWT SWING 4

  • Slides: 37
Download presentation
명품 JAVA Programming 1 제 9 장 자바 GUI 기초, AWT와 스윙(SWING)

명품 JAVA Programming 1 제 9 장 자바 GUI 기초, AWT와 스윙(SWING)

스윙 컴포넌트 예시 4 JButton JCheck. Box JText. Field JRadio. Button JPassword. Field JSlider

스윙 컴포넌트 예시 4 JButton JCheck. Box JText. Field JRadio. Button JPassword. Field JSlider JSpinner JText. Area JCombo. Box JList

JProgress. Bar JTool. Tip JScroll. Pane JMenu JDialog 5 JApplet JFrame

JProgress. Bar JTool. Tip JScroll. Pane JMenu JDialog 5 JApplet JFrame

JTable JTree 6 JEditor. Pane and JText. Pane

JTable JTree 6 JEditor. Pane and JText. Pane

JTool. Bar JSplit. Pane JTabbed. Pane 7

JTool. Bar JSplit. Pane JTabbed. Pane 7

Swing 으로 만든 GUI 프로그램 샘플 8 JButton JLabel JText. Field 프레임 윈도우 닫기

Swing 으로 만든 GUI 프로그램 샘플 8 JButton JLabel JText. Field 프레임 윈도우 닫기 버튼 JFrame JMenu. Bar JMenu JTool. Bar JCombo. Box JList JLabel JScroll. Pane JSplit. Pane

GUI 라이브러리 계층 구조 Object Font Componen t Font. Metrics Button Text. Componen t

GUI 라이브러리 계층 구조 Object Font Componen t Font. Metrics Button Text. Componen t Label Canva s Choic e List Checkbo x JScroll. Bar JCompone nt JCombo. B ox JLayered. Pan e JPanel JEditor. Pan e JTabbed. Pan e JSplit. Pane JSeparator JRoot. Pane JTool. Bar JTool. Tip JColor. Choos er JTree JProgress. Ba r JSpinne r JPopup. Men u JTable JFile. Chooser JTable. Head er JScroll. Pan e JInternal. Fra me Graphics Panel Window Applet Frame Dialog JApplet JFrame JDialog Abstract. Butto n JText. Component JSlider JOption. Pan e JMenu. Bar 9 JList AWT 클래스 Color Container Scrollbar Swing 클래스 JLabel Dimension JText. Field JText. Area JPassword. Fie ld JMenu. Ite m JButton JToggle. Butto n JCheck. Bo x JMenu JCheck. Box. Menu. It em JRadio. Button. Menu. It em JRadio. Butto n

타이틀 프레임 만들기 15 두 가지 방법 300 픽셀 • • main() 메소드에서 JFrame

타이틀 프레임 만들기 15 두 가지 방법 300 픽셀 • • main() 메소드에서 JFrame 객체를 생성 확장성, 융통성 결여 • • JFrame 을 상속받은 프레임 클래스 이용 main() 은 단순히 프레임 객체를 생성하는 역할 import javax. swing. *; public class My. App { public static void main(String [] args) { JFrame f = new JFrame(); f. set. Title("첫번째 프레임"); f. set. Size(300, 300); f. set. Visible(true); } } public class My. Frame extends JFrame { My. Frame() { set. Title("첫번째 프레임"); set. Size(300, 300); set. Visible(true); } 방법 1. main() 메소드에서 JFrame 객체 생성 추천 } public static void main(String [] args) { My. Frame mf = new My. Frame(); } 방법 2. JFrame 을 상속받은 프레임 클래스 이용

main()의 위치 16 추천 import javax. swing. *; public class My. Frame extends JFrame

main()의 위치 16 추천 import javax. swing. *; public class My. Frame extends JFrame { My. Frame() { set. Title("첫번째 프레임"); set. Size(300, 300); set. Visible(true); } } public class My. App { public static void main(String [] args) { My. Frame mf = new My. Frame(); } } } public static void main(String [] args) { My. Frame mf=new My. Frame(); } main()을 프레임 클래스 내의 멤버로 작성 main()을 가진 다른 클래스 My. App 작성

프레임에 컴포넌트 붙이기 17 타이틀 – 타이틀 바에 부착 // JFrame의 생성자 이용 JFrame

프레임에 컴포넌트 붙이기 17 타이틀 – 타이틀 바에 부착 // JFrame의 생성자 이용 JFrame frame = new JFrame("타이틀문자열"); // JFrame의 set. Title() 메소드 호출 frame. set. Title("타이틀문자열"); JFrame frame = new JFrame(); 컨텐트팬 알아내기 스윙 컴포넌트 – 컨텐트 팬에 부착 컨텐트팬에 컴포넌트 달기 컨텐트팬 변경 Container content. Pane = frame. get. Content. Pane(); JFrame frame = new JFrame(); JButton b = new JButton("Click"); Container c = frame. get. Content. Pane(); c. add(b); JPanel p = new JPanel(); frame. set. Content. Pane(p);

예제 9 -1 : 컴포넌트를 부착한 프레임 예 19 import javax. swing. *; import

예제 9 -1 : 컴포넌트를 부착한 프레임 예 19 import javax. swing. *; import java. awt. *; public class Content. Pane. Ex extends JFrame { Content. Pane. Ex() { set. Title("Content. Pane과 JFrame"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); Container content. Pane = get. Content. Pane(); content. Pane. set. Background(Color. ORANGE); content. Pane. set. Layout(new Flow. Layout()); content. Pane. add(new JButton("OK")); content. Pane. add(new JButton("Cancel")); content. Pane. add(new JButton("Ignore")); } } set. Size(350, 150); set. Visible(true); public static void main(String[] args) { new Content. Pane. Ex(); }

컨테이너와 배치관리자 24 컨테이너의 디폴트 배치관리자 � 컨테이너는 생성시 디폴트 배치관리자 설정 컨테이너에 새로운

컨테이너와 배치관리자 24 컨테이너의 디폴트 배치관리자 � 컨테이너는 생성시 디폴트 배치관리자 설정 컨테이너에 새로운 배치관리자 설정 � Container. set. Layout(Layout. Manager lm) lm을 새로운 배치관리자로 설정 // JPanel 패널에 Border. Layout 배치관리자를 설정 하는 예 JPanel p = new JPanel(); p. set. Layout(new Border. Layout()); JFrame frame = new JFrame(); Container c = frame. get. Conent. Pane(); // 프레임의 컨텐트팬 c. set. Layout(new Flow. Layout()); // 컨텐트팬에 Flow. Layout 설정 혹은 frame. set. Layout(new Flow. Layout()); // JDK 1. 5 이후 버전에서

Flow. Layout 25 배치방법 � 컨테이너 공간 내에 왼쪽에서 오른쪽으로 배치 다시 위에서 아래로

Flow. Layout 25 배치방법 � 컨테이너 공간 내에 왼쪽에서 오른쪽으로 배치 다시 위에서 아래로 순서대로 컴포넌트를 배치한다. container. set. Layout(new Flow. Layout()); container. add(new JButton("add")); container. add(new JButton("sub")); container. add(new JButton("mul")); container. add(new JButton("div")); container. add(new JButton("Calculate"));

예제 9 -2 : LEFT로 정렬되는 수평 간격이 30 픽 셀, 수직 간격이 40

예제 9 -2 : LEFT로 정렬되는 수평 간격이 30 픽 셀, 수직 간격이 40 픽셀인 Flow. Layout 사용 예 28 import javax. swing. *; import java. awt. *; public class Flow. Layout. Ex extends JFrame { Flow. Layout. Ex() { set. Title("Flow. Layout Sample"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Layout(new Flow. Layout(Flow. Layout. LEFT, 30, 40)); add(new JButton("add")); add(new JButton("sub")); add(new JButton("mul")); add(new JButton("div")); add(new JButton("Calculate")); } } v. Gap, 40 픽셀 set. Size(300, 250); set. Visible(true); public static void main(String[] args) { new Flow. Layout. Ex(); } h. Gap , 30 픽셀 Flow. Layout. LEFT로 정렬됨

Border. Layout 29 배치방법 � 컨테이너 공간을 5 구역으로 분할, 배치 � East, West,

Border. Layout 29 배치방법 � 컨테이너 공간을 5 구역으로 분할, 배치 � East, West, South, North, Center 배치 방법 add(Component comp, int index) � comp를 index의 공간에 배치 컨테이너의 크기가 변하면 재배치 Border. Layout. NORTH Border. Layout. WEST container. set. Layout(new Border. Layout()); container. add(new JButton("div"), Border. Layout. WEST); container. add(new JButton("Calculate"), Border. Layout. CENTER); Border. Layout. EAST Border. Layout. SOUTH Border. Layout. CENTER

예제 9 -3 : Border. Layout 사용 예 32 import javax. swing. *; import

예제 9 -3 : Border. Layout 사용 예 32 import javax. swing. *; import java. awt. *; public class Border. Layout. Ex extends JFrame { Border. Layout. Ex() { set. Title("Border. Layout Sample"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Layout(new Border. Layout()); add(new JButton("add"), Border. Layout. NORTH); add(new JButton("sub"), Border. Layout. SOUTH); add(new JButton("mul"), Border. Layout. EAST); add(new JButton("div"), Border. Layout. WEST); add(new JButton("Calculate"), Border. Layout. CENTER); } } set. Size(300, 200); set. Visible(true); public static void main(String[] args) { new Border. Layout. Ex(); }

예제 9 -4 : Grid. Layout으로 입력 폼 만들기 35 import javax. swing. *;

예제 9 -4 : Grid. Layout으로 입력 폼 만들기 35 import javax. swing. *; import java. awt. *; 두 행 사이의 수직 간격 v. Gap이 5 픽셀로 설정됨 public class Grid. Layout. Ex extends JFrame { Grid. Layout. Ex() { set. Title("Grid. Layout Sample"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); Grid. Layout grid = new Grid. Layout(4, 2); grid. set. Vgap(5); set. Layout(grid); add(new JLabel(" 이름")); add(new JText. Field("")); add(new JLabel(" 학번")); add(new JText. Field("")); add(new JLabel(" 학과")); add(new JText. Field("")); add(new JLabel(" 과목")); add(new JText. Field("")); } } set. Size(300, 200); set. Visible(true); public static void main(String[] args) { new Grid. Layout. Ex(); }

예제 9 -5 : 배치관리자 없는 컨테이너에 컴포넌 트 위치와 크기를 절대적으로 지정 37

예제 9 -5 : 배치관리자 없는 컨테이너에 컴포넌 트 위치와 크기를 절대적으로 지정 37 import javax. swing. *; import java. awt. *; public class Null. Container. Ex extends JFrame { Null. Container. Ex() { set. Title("Null Container Sample"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Layout(null); 원하는 위치에 원하는 크기로 컴포넌트를 마음대로 배치할 수 있다. } } JLabel la = new JLabel("Hello, Press Buttons!"); la. set. Location(130, 50); la. set. Size(200, 20); add(la); for(int i=1; i<=9; i++) { JButton b = new JButton(Integer. to. String(i)); b. set. Location(i*15, i*15); b. set. Size(50, 20); add(b); } set. Size(300, 200); set. Visible(true); public static void main(String[] args) { new Null. Container. Ex(); }