JAVA Programming 1 3 JButton JCheck Box JText
명품 JAVA Programming 1
스윙 컴포넌트 예시 3 JButton JCheck. Box JText. Field JRadio. Button JPassword. Field JSlider JSpinner JText. Area JCombo. Box JList
JProgress. Bar JTool. Tip JScroll. Pane JMenu JDialog 4 JApplet JFrame
JTable JTree 5 JEditor. Pane and JText. Pane
JTool. Bar JSplit. Pane JTabbed. Pane 6
Swing 으로 만든 GUI 프로그램 샘플 7 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 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 8 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
타이틀 프레임 만들기 14 두 가지 방법 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()의 위치 15 추천 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 작성
프레임에 컴포넌트 붙이기 16 타이틀 – 타이틀 바에 부착 // 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 : 컴포넌트를 부착한 프레임 예 18 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(); }
컨테이너와 배치관리자 23 컨테이너의 디폴트 배치관리자 � 컨테이너는 생성시 디폴트 배치관리자 설정 컨테이너에 새로운 배치관리자 설정 � 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 24 배치방법 � 컨테이너 공간 내에 왼쪽에서 오른쪽으로 배치 다시 위에서 아래로 순서대로 컴포넌트를 배치한다. 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 픽셀인 Flow. Layout 사용 예 27 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); Container c = get. Content. Pane(); c. set. Layout(new Flow. Layout(Flow. Layout. LEFT, 30, 40)); c. add(new JButton("add")); c. add(new JButton("sub")); c. add(new JButton("mul")); c. add(new JButton("div")); c. 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 28 배치방법 � 컨테이너 공간을 5 구역으로 분할, 배치 � East, West, South, North, Center 배치 방법 add(Component comp, int index) � comp를 index의 공간에 배치 컨테이너의 크기가 변하면 재배치 Border. Layout. NORTH Border. Layout. EAST container. set. Layout(new Border. Layout()); container. add(new JButton("div"), Border. Layout. WEST); container. add(new JButton("Calculate"), Border. Layout. CENTER); Border. Layout. WEST Border. Layout. SOUTH Border. Layout. CENTER
예제 9 -3 : Border. Layout 사용 예 31 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); Container c = get. Content. Pane(); c. set. Layout(new Border. Layout()); c. add(new JButton("add"), Border. Layout. NORTH); c. add(new JButton("sub"), Border. Layout. SOUTH); c. add(new JButton("mul"), Border. Layout. EAST); c. add(new JButton("div"), Border. Layout. WEST); c. 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으로 입력 폼 만들기 34 import javax. swing. *; import java. awt. *; public class Grid. Layout. Ex extends JFrame { Grid. Layout. Ex() { set. Title("Grid. Layout Sample"); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); Container c = get. Content. Pane(); Grid. Layout grid = new Grid. Layout(4, 2); grid. set. Vgap(5); c. set. Layout(grid); c. add(new JLabel(" 이름")); c. add(new JText. Field("")); c. add(new JLabel(" 학번")); c. add(new JText. Field("")); c. add(new JLabel(" 학과")); c. add(new JText. Field("")); c. add(new JLabel(" 과목")); c. add(new JText. Field("")); 두 행 사이의 수직 간격 v. Gap이 5 픽셀로 설정됨 } } set. Size(300, 200); set. Visible(true); public static void main(String[] args) { new Grid. Layout. Ex(); }
- Slides: 34