250 likes | 514 Views
컨테이너. 컴퓨터정보과 안유정 교수 연구동 410 호 yjahn@mjc.ac.kr. 컨테이너. 컨테이너란 ? 다른 컴포넌트들을 포함할 수 있는 컴포넌트 . 컨테이너 자신만으로는 특별한 동작을 할 수 없고 다른 컴포넌트를 포함할 때만 의미를 갖는다 . 컨테이너 안에 서브 컨테이너들을 가질 수 있다 . 컨테이너 내에 배치될 컴포넌트들의 위치와 크기를 결정하는 레이아웃을 지정할 수 있다. 일반적으로 서브 컨테이너로 Panel 클래스가 많이 사용된다. 컨테이너. 컨테이너의 하위클래스들 (3 개 ).
E N D
컨테이너 컴퓨터정보과 안유정 교수 연구동 410호 yjahn@mjc.ac.kr
컨테이너 • 컨테이너란 ? 다른 컴포넌트들을 포함할 수 있는 컴포넌트. • 컨테이너 자신만으로는 특별한 동작을 할 수 없고 다른 컴포넌트를 포함할 때만 의미를 갖는다. • 컨테이너 안에 서브 컨테이너들을 가질 수 있다. • 컨테이너 내에 배치될 컴포넌트들의 위치와 크기를 결정하는 레이아웃을 지정할 수 있다. • 일반적으로 서브 컨테이너로 Panel 클래스가 많이 사용된다.
컨테이너 • 컨테이너의 하위클래스들 (3개) Container Container Container Panel Panel Panel Window Window Window ScrollPane ScrollPane ScrollPane Applet Frame Frame Frame Frame Frame Dialog Dialog Dialog ileDialog F Frame Frame
Panel 클래스 • Panel 클래스 • Container 클래스로부터 상속된 클래스로서 컴포넌트들을 담는 그릇역할을 하는 클래스 • 애플릿에 여러 개의 Panel 객체를 생성하고, • 각각의 Panel 객체에 배치관리자를 설정하여 컴포넌트들을 • 배치할 수 있다. • 생성자- Panel() • Panel p = new Panel();
해보기 패널 pt pt1 pt2 pt3 pb1 pb2 패널 pb
예제 PanelDemo.java ---------------------------------- import java.applet.*; import java.awt.*; public class PanelDemo extends Applet { public void init() { Panel pt, pb; // 애플릿의 서브 패널로 pt, pb 선언 Panel pt1, pt2, pt3; // pt 판넬의 서브 패널로 pt1, pt2, pt3 선언 Panel pb1, pb2; // pb 판넬의 서브 패널로 pb1, pb2 선언 pt = new Panel(); pt.setLayout(new GridLayout(1,3)); // pt에 배치관리자 설정 pt.setBackground(new Color(170,170,170)); add(pt); // 애플릿에 pt Panel 추가
예제 PanelDemo.java 계속 pt1 = new Panel(); // pt1 패널 생성 pt1.setLayout(new GridLayout(3,1)); pt1.setBackground(new Color(221,221,221)); CheckboxGroup rgb = new CheckboxGroup(); // 라디오버튼 Checkbox red = new Checkbox("Red", rgb, true); Checkbox green = new Checkbox("Green", rgb, false); Checkbox blue = new Checkbox("Blue", rgb, false); pt1.add(red); // 라디오버튼 객체들을 pt1 패널에 출력 pt1.add(green); pt1.add(blue); pt.add(pt1); // pt에 서브 패널인 pt1 추가
예제 PanelDemo.java 계속 pt2 = new Panel(); // pt2 패널 생성 pt2.setLayout(new GridLayout(3,1)); pt2.setBackground(new Color(187,187,187)); Checkbox city1 = new Checkbox("서울"); Checkbox city2 = new Checkbox("대구"); Checkbox city3 = new Checkbox("부산"); pt2.add(city1); // 체크박스 객체들을 pt2 패널에 출력 pt2.add(city2); pt2.add(city3); pt.add(pt2); // pt에 서브 패널인 pt2 추가
예제 PanelDemo.java 계속 pt3 = new Panel(); pt3.setLayout(new FlowLayout()); pt3.setBackground(new Color(153,153,153)); Button bt1 = new Button(" 선 택 "); Button bt2 = new Button(" 취 소 "); pt3.add(bt1); pt3.add(bt2); pt.add(pt3);
예제 PanelDemo.java 계속 pb = new Panel(); pb.setBackground(new Color(221,221,221)); add(pb); pb1 = new Panel(); TextArea ta = new TextArea("자료입력공간",10,29); pb1.add(ta); // TextArea 객체 ta를 pb1에 추가 pb.add(pb1); pb2 = new Panel(); Choice ca = new Choice(); ca.addItem("1구간 지역"); ca.addItem("2구간 지역"); ca.addItem("3구간 지역"); ca.addItem("4구간 지역"); ca.addItem("5구간 지역"); pb2.add(ca); // Choice 객체 ca를 pb2에 추가 pb.add(pb2); } }
예제 PanelDemo.html <html> <head><title>PanelDemo</title></head> <body> <applet code="PanelDemo" width=400 height=300> </applet> </body> </html>
Window 클래스 • Window 클래스 • 타이틀이나 메뉴가 없는 단순한 윈도우를 제공하는 클래스 • Window의 하위 클래스 – Frame, Dialog, FileDialog • 메소드 • void show() 생성된 윈도우 객체를 나타낸다 • void dispose() 윈도우 객체를 제거한다 • void pack() 윈도우를 초기 크기로 설정한다
Frame 클래스 • Frame 클래스 • Window 클래스의 하위 클래스. • Frame 클래스의 객체는 타이틀이나 메뉴등을 사용할 수 있다. • 일반적으로 윈도우를 생성하기 위해 Window를 사용하지 않고 • Frame을 사용 • 생성자 • Frame() • Frame(String title) // title : 윈도우의 타이틀 바에 나타낼 문자열
Frame 클래스 • 메소드 • String getTitle()현재 윈도우의 타이틀을 문자열로 반환 • void setTitle(String str)현재 윈도우의 타이틀을 str로 설정 • MenuBargetMenuBar()현재 윈도우의 메뉴바를 MenuBar객체로 반환 • void setmenuBar(MenuBarmb) • 현재의 윈도우에 mb로 지정된 메뉴바 설정 • 관련 이벤트 : window 이벤트 발생
Dialog와 FileDialog 클래스 • 다이어로그 윈도우 • 사용자에게 간단한 정보를 알리거나 받아들이기 위해 사용 • modal 다이어로그 윈도우: 사용자에 의해 윈도우가 처리(OK 버튼을 누르는 등)되어야만 응용 프로그램이 계속 진행된다. • modeless : 다이어로그 윈도우가 사용자에 의해 처리되지 않아도 응용 프로그램이 계속 진행될 수 있다.
Dialog와 FileDialog 클래스 • Dialog 클래스 • 생성자 • Dialog(Frame parent) • Dialog(Frame parent, boolean flag) • Dialog(Frame parent, String title) • Dialog(Frame parent, String title, boolean flag) • parent :다이어로그 윈도우를 제어하는 Frame 타입의 • 부모 윈도우. • title :다이어로그 윈도우에 나타낼 타이틀. • flag: true이면 modal 다이어로그 윈도우를 의미. • false이면 modeless 다이어로그 윈도우를 의미.
Dialog와 FileDialog 클래스 • FileDialog 클래스 • 생성자 • FileDialog(Frame parent) • FileDialog(Frame parent, String title) • Dialog(Frame parent, String title, int mode) • parent :다이어로그 윈도우를 제어하는 Frame 타입의 • 부모 윈도우. • title :다이어로그 윈도우에 나타낼 타이틀. • mode: FileDialog.LOAD이면 읽기. • FileDialog.SAVE이면 저장.
예제 DialogDemo.java import java.applet.*; import java.awt.*; import java.awt.event.*; public class DialogDemo extends Applet implements ActionListener { public void init() { Button b = new Button("프레임 생성 버튼"); b.addActionListener(this); // 버튼에 리스너 등록 add(b); } public void actionPerformed(ActionEvent ae) { MyFrame my = new MyFrame("프레임 "); // 버튼이 눌려지면 프레임 생성 my.setSize(135, 135); // 프레임의 크기 조정 my.show(); // 프레임을 나타낸다 } }
예제 DialogDemo.java 계속 class MyFrame extends Frame implements ActionListener { MyFrame(String title) { super(title); // 프레임 창의 제목 Button la = new Button("Dialog 박스생성"); // 프레임에 버튼 생성 la.addActionListener(this); // 버튼에 리스너 등록 add(la); } public void actionPerformed(ActionEvent ae) { String message = "다이어로그 박스에 나타낼 메시지"; MessageDialog md =new MessageDialog(this, "Message Dialog",true, message); // 다이어로그 박스 생성 md.show(); // 다이어로그 박스를 나타냄 } }
예제 DialogDemo.java 계속 class MessageDialog extends Dialog implements ActionListener { // 다이어로그를 나타내는 클래스 Button ok; MessageDialog(Frame parent, String title, boolean mode, String message) { // 생성자 메소드를 이용하여 다이어로그 박스 구성 super(parent, title, mode); Panel pc = new Panel(); Label label = new Label(message); pc.add(label); add(pc, "Center"); // Panel을 생성하여 레이블을 추가 Panel ps = new Panel(); ok = new Button("OK"); ok.addActionListener(this); ps.add(ok); add(ps, "South"); // Panel을 생성하여 버튼을 추가 pack(); // 컴포넌트를 배치하고 다이어로그 박스의 초기 크기를 설정 }
예제 DialogDemo.java 계속 public void actionPerformed(ActionEvent ae) { dispose(); } }
예제 FileDialogDemo.java import java.applet.*; import java.awt.*; import java.awt.event.*; public class FileDialogDemo extends Applet implements ActionListener { public void init() { Button b = new Button("프레임 생성 버튼"); b.addActionListener(this); // 버튼에 리스너 등록 add(b); } public void actionPerformed(ActionEvent ae) { MyFrame my = new MyFrame("프레임 "); // 버튼이 눌려지면 프레임생성 my.setSize(135, 135); // 프레임의 크기 조정 my.show(); // 프레임을 나타낸다 } }
예제 FileDialogDemo.java class MyFrame extends Frame implements ActionListener { MyFrame(String title) { super(title); Button la = new Button("파일 Dialog 박스생성"); // 프레임에 버튼 생성 la.addActionListener(this); // 버튼에 리스너 등록 add(la); } public void actionPerformed(ActionEvent ae) { FileDialog fd = new FileDialog(this, "파일 다이어로그“, FileDialog.LOAD ); fd.setVisible(true); // 파일 다이어로그를 생성하고 화면에 나타낸다. } }