1 / 33

14.  기타  GUI Components

14.  기타  GUI Components. 14. 기타  GUI Components. 14.1 Window  클래스와  Frame  클래스 14.1.1 Window  클래스 ( 추상 클래스 ) 윈도우 클래스 생성자 ① public Window(Frame parent ) 지원되는 메소드 ① public synchronized void pack() 윈도우 안의 컴포넌트들을 선호하는 크기로 재배치한다 . ② public void show()

Download Presentation

14.  기타  GUI Components

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 14. 기타 GUI Components

  2. 14. 기타 GUI Components 14.1 Window 클래스와 Frame 클래스 14.1.1 Window 클래스(추상 클래스) • 윈도우클래스생성자 ①publicWindow(Frameparent) • 지원되는메소드 ①publicsynchronizedvoidpack() 윈도우안의컴포넌트들을선호하는크기로재배치한다. ②publicvoidshow() 생성된윈도우를보여주는메소드이다. ③publicsynchronizedvoiddispose() 윈도우와그내용을제거한다. ④publicvoidtoBack() 이메소드를호출한윈도우뒤에부모윈도우를위치시킨다.

  3. 14. 기타 GUI Components 14.1.2 Frame 클래스 -Frame은Window클래스의하위클래스 • 생성자 ①publicFrame() BoderLayout관리자를사용하는 프레임객체를생성한다. ②publicFrame(Stringtitle) BoderLayout관리자를사용하고, 프레임의 타이틀을명시한프레임객체를생성한다. • 지원되는메소드 ①publicStringgetTitle() 프레임의타이틀값을반환한다. ②publicvoidsetTitle(Stringtitle) 프레임의타이틀값을설정한다. ③publicvoidsetIconImage(Imageimage) 프레임이아이콘으로변경되었을때사용할이미지를설정한다. ④publicMenuBargetMenuBar() 프레임안에포함된MenuBar객체를반환. ⑤publicsynchronizedvoidsetMenuBar(MenuBarmb) 프레임안에디스플레이될MenuBar를설정한다. ⑥publicsynchronizedvoidremove(MenuComponentm) 프레임안에서원하는메뉴컴포넌트를제거한다.

  4. 14. 기타 GUI Components [Frame 객체 예제 프로그램] import java.applet.*; import java.awt.*; import java.awt.event.*; public class FrameDemo extends Applet implements  ActionListener {   public void init() {     Button b1 = new Button("Create New Frame");     b1.addActionListener(this);     add(b1);  // 애플릿에 프레임 추가 }  public void actionPerformed(ActionEvent ae) {       MyFrame my = new MyFrame("My Frame");     my.setSize(160, 120);             // 프레임 크기 설정 my.show();   } } class MyFrame extends Frame {     static int i = 1;

  5. 14. 기타 GUI Components [Frame 객체 예제 프로그램]     MyFrame(String title) {       super(title);       addWindowListener(new WindowAdapter()        {           public void windowClosing(WindowEvent we) {                // 윈도우 종료 루틴 설정 setVisible(false);                 dispose();               System.exit(0);           }       });       Label la = new Label(" New Frame: #" + (i++));       add(la);     }   }

  6. 14. 기타 GUI Components 14.1.3 메뉴 (menu) 메뉴바, 메뉴, 메뉴아이템 • 메뉴프로그래밍과정 ①Frame객체와MenuBar객체를생성한다. ②MenuBar객체를setMenuBar()메소드를사용프레임에추가 ③Menu객체를생성한다. add()메소드를이용하여MenuBar에Menu객체를추가 ④MenuItem또는CheckboxMenuItem객체를생성 ⑤add()메소드를이용하여생성된MenuItem을추가 ⑥MenuItem에적절한Listener를등록한후이벤트처리루틴을 작성

  7. 14. 기타 GUI Components • 메뉴바클래스 메뉴바는수평막대기모양으로메뉴가들어갈터를잡아주는컴포넌 트이다.일반적으로프레임윈도우의상단에위치한다.프로그램에서 사용하고자하는모든메뉴들은메뉴바안에위치하여야한다. 메뉴바의생성자의형식은다음과같다. publicMenuBar() • 메뉴바에메뉴를추가/삭제하는데사용되는메소드는다음과같다. ①publicsynchronizedMenuadd(Menum) 메뉴바에메뉴를추가한다. ②publicsynchronizedvoidremove(intindex) 인덱스를사용하여메뉴바에서메뉴를삭제한다. ③publicsynchronizedvoidremove(MenuComponentm) 원하는메뉴컴포넌트를삭제한다. ④publicintgetMenuCount() 메뉴바에포함된메뉴의수를반환한다. ⑤publicMenugetMenu(intindex) 특정위치의메뉴를반환한다. 14.1.3 메뉴 (menu)

  8. 14. 기타 GUI Components • 메뉴 메뉴바위에보이는레이블이바로메뉴객체이며,메뉴객체는 add() 메소드를통해서메뉴바에포함될수있다.마우스로 MenuBar위의 메뉴를클릭하면,메뉴아이템이메뉴밑으로 디스플레이 된다.메뉴객체의생성자를정리하면다음과같다. ①publicMenu() 가장기본적인메뉴를생성한다. ②publicMenu(Stringlabel) 원하는레이블을가진메뉴를생성한다. ③publicMenu(Stringlabel,booleantearOff) 메뉴에들어갈레이블및메뉴를떼어놓을것인지를지정할 수있다. tearOff값이true이면tear-off메뉴가된다. 14.1.3 메뉴 (menu)

  9. 14. 기타 GUI Components • 메뉴객체에서지원되는메소드는다음과같다. ①publicsynchronizedMenuItemadd(MenuItemm) 메뉴에원하는메뉴아이템m을추가한다. ②publicvoidadd(Stringlabel) 메뉴에원하는메뉴아이템을추가한다. ③publicsynchronizedvoidinsert(MenuItemm,intindex) 메뉴의원하는위치에메뉴아이템을추가한다. ④publicsynchronizedvoidinsert(Sringlabel,intindex) 메뉴의원하는위치에메뉴아이템을추가한다. ⑤publicsynchronizedvoidremove(intindex) 메뉴에서원하는위치의메뉴아이템을삭제한다. ⑥publicsynchronizedvoidremove(MenuComponentitem) 메뉴에서원하는메뉴컴포넌트를삭제한다. ⑦publicsynchronizedvoidremoveAll() 메뉴에포함된모든메뉴아이템을삭제한다. ⑧publicMenuItemgetItem(intindex) 메뉴에서특정위치에있는메뉴아이템을반환한다. ⑨publicvoidaddSeparator() 메뉴의마지막부분에분리선을추가한다. 14.1.3 메뉴 (menu)

  10. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • 메뉴아이템 MenuItem는메뉴객체안에위치하며,실제사용자에의해선택되는 항목이다.메뉴아이템은마우스를통해서선택되거나키보드에의해 서선택될수있다.이때키보드의값을단축키라고한다.메뉴아이템 은다음과같은생성자를가진다. ①publicMenuItem() 기본적인메뉴아이템을생성한다. ②publicMenuItem(Stringlabel) 원하는레이블을가진메뉴아이템을생성한다. ③publicMenuItem(Stringlabel,MenuShortcuts) 원하는레이블과단축키를가진메뉴아이템을생성한다.

  11. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • 메뉴아이템클래스가지원하는메소드는다음과같다. ①publicsynchronizedvoidsetLabel(Stringlabel) 메뉴아이템의레이블을설정한다. ②publicStringgetLabel() 메뉴아이템의레이블을반환한다. ③publicsynchronizedvoidsetEnabled(booleanb) 메뉴아이템이선택가능여부를설정한다.인자의값이true일때 선택가능하다. ④publicvoidsetShortcut(MenuShortcuts) 메뉴아이템에단축키를설정한다. ⑤publicvoidMenuShortcutgetShortcut() 메뉴아이템에지정된단축키를반환한다. ⑥voidaddActionListener(ActionListeneral) 메뉴아이템의액션이벤트를리스너에등록한다.

  12. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • 체크박스 메뉴아이템 CheckboxMenuItem은메뉴에서체크박스를사용할수있게해준다. 마우스로메뉴에있는체크박스를클릭할때마다on-off토글이발생 한다.체크박스메뉴아이템은메뉴아이템에체크기능을추가한 것이므로,기본적인사용방법은메뉴아이템과동일하다.체크박스 메뉴아이템클래스의생성자를정리하면다음과같다. ①publicCheckboxMenuItem() 기본적인체크박스메뉴아이템을생성한다. ②publicCheckboxMenuItem(Stringlabel) 원하는문자열을가진체크박스메뉴아이템을생성한다. ③publicCheckboxMenuItem(Stringlabel,booleanstate) 원하는문자열및초기상태를설정할수있는생성자이다.

  13. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • 체크박스메뉴아이템클래스에서지원되는메소드는다음과같다. ①publicbooleangetState() 체크박스의on/off상태를반환한다. ②publicsynchronizedvoidsetState(booleanb) 체크박스의상태를설정한다. ③voidaddItemListener(ItemListenerl) 체크박스메뉴아이템의이벤트를리스너에등록한다.

  14. 14. 기타 GUI Components [예제프로그램] importjava.awt.*; importjava.awt.event.*; publicclassMenuDemoextendsjava.applet.Applet{ MenuFramef; publicvoidinit(){ f=newMenuFrame("MenuDemo"); intwidth=Integer.parseInt(getParameter("width")); intheight=Integer.parseInt(getParameter("height")); f.setSize(width,height); f.setVisible(true); } publicvoidstart(){ f.setVisible(true); } publicvoidstop(){ f.setVisible(false); } } 14.1.3 메뉴 (menu)

  15. 14. 기타 GUI Components [예제프로그램] classMenuFrameextendsFrameimplements ActionListener,ItemListener{ Stringmsg=""; CheckboxMenuItemcb1,cb2; MenuFrame(Stringtitle){ super(title); MenuBarmenubar=newMenuBar(); setMenuBar(menubar); Menufile=newMenu("Document"); MenuItemitem1,item2,item3,item4,item5; file.add(item1=newMenuItem("new")); file.add(item2=newMenuItem("open")); file.add(item3=newMenuItem("read")); file.add(item4=newMenuItem("-")); file.add(item5=newMenuItem("end")); Menuedit=newMenu("Edit"); MenuItemitem6,item7,item8,item9,item10; edit.add(item6=newMenuItem("cut")); edit.add(item7=newMenuItem("paste")); cb1=newCheckboxMenuItem("sign1"); cb2=newCheckboxMenuItem("sign2"); 14.1.3 메뉴 (menu)

  16. 14. 기타 GUI Components [예제프로그램] edit.add(cb1); edit.add(cb2); edit.add(item8=newMenuItem("-")); Menusub=newMenu("Doc.Info"); sub.add(item9=newMenuItem("password")); sub.add(item10=newMenuItem("pages")); edit.add(sub); menubar.add(file); menubar.add(edit); item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); item7.addActionListener(this); item8.addActionListener(this); item9.addActionListener(this); item10.addActionListener(this); cb1.addItemListener(this); cb2.addItemListener(this); } 14.1.3 메뉴 (menu)

  17. 14. 기타 GUI Components [예제프로그램] publicvoidactionPerformed(ActionEvente){ msg="Yourselectionis"; Stringarg=(String)e.getActionCommand(); if(arg.equals("new"))msg+="new"; elseif(arg.equals("open")){ FileDialogf=newFileDialog(this,"FileDialog"); f.setVisible(true); } elseif(arg.equals("read"))msg+="read"; elseif(arg.equals("end")){ setVisible(false); dispose(); System.exit(0); } elseif(arg.equals("cut"))msg+="cut"; elseif(arg.equals("paste"))msg+="paste"; elseif(arg.equals("password"))msg+="password"; elseif(arg.equals("pages"))msg+="pages"; repaint(); } 14.1.3 메뉴 (menu)

  18. 14. 기타 GUI Components [예제프로그램] publicvoiditemStateChanged(ItemEvente){ repaint(); } publicvoidpaint(Graphicsg){ g.drawString(msg,10,150); if(cb1.getState()) g.drawString("sign1On",10,180); else g.drawString("sign1Off",10,180); if(cb2.getState()) g.drawString("sign2On",10,200); else g.drawString("sign2Off",10,200); } } [HTML파일] <html> <head><title>MenuBarDemo</title></head> <body> <appletcode="MenuDemo"width=300height=300> </applet></body></html> 14.1.3 메뉴 (menu)

  19. 14. 기타 GUI Components • PopupMenu PopupMenu는자바애플릿실행시간에Container객체안의임의위치 에나타날수있는팝업메뉴를구현하기위한클래스이다.팝업메뉴 는키보드나마우스를사용한특정이벤트가발생하면화면에나타나 게되는데,팝업메뉴를발생시키는이벤트는운영체제마다다르다. MS윈도우의경우컴포넌트위에마우스포인터를위치시킨후오른 버튼을클릭하면팝업메뉴가나타난다. [생성자] ①publicPopupMenu() -팝업메뉴를생성한다. ②publicPopupMenu(Stringlabel) - 원하는이름을가진팝업메뉴를생성한다. 14.1.3 메뉴 (menu)

  20. 14. 기타 GUI Components • PopupMenu PopMenu클래스는Menu클래스의파생클래스이므로,Menu클래스의 메소드를모두사용할수있다.특히팝업메뉴를동작시키는방법이운 영체제에따라다르므로,이를감지하는메소드isPopupTrigger()가 MouseEvent클래스에서지원된다.그러므로팝업메뉴를화면에출력하 기위해서는먼저마우스리스너에서isPopupTrigger()메소드를사용하 여현재발생한마우스이벤트가팝업메뉴를호출하는것이었는지를 감지 하여야한다. 다음예제프로그램은Frame에팝업메뉴를등록한애플릿이다.오른쪽 마우스버튼을클릭하면팝업메뉴가나타나며,선택한메뉴아이템이 하단에디스플레이된다. 14.1.3 메뉴 (menu)

  21. 14. 기타 GUI Components importjava.awt.*; importjava.awt.event.*; publicclasspopupDemoextendsjava.applet.Applet{ PopupMenuDemof; publicvoidinit(){ f=newPopupMenuDemo(); add(f); f.setVisible(true); } classPopupMenuDemoextendsFrame{ PopupMenupm=newPopupMenu("Demo"); Labelt1=newLabel("ClickRightbutton",Label.CENTER); publicPopupMenuDemo(){ super("PopupMenuDemo"); Canvasc1=newCanvas(); add(c1,BorderLayout.CENTER); c1.addMouseListener(newmouseListener()); 14.1.3 메뉴 (menu)

  22. 14. 기타 GUI Components 14.1.3 메뉴 (menu) pm.add(addMenuItem("popupmenuone")); pm.add(addMenuItem("popupmenutwo")); pm.add(addMenuItem("popupmenuthree")); pm.add(addMenuItem("-")); pm.add(addMenuItem("Exit")); c1.add(pm); add(t1,BorderLayout.SOUTH); addWindowListener(newwindowListener()); setSize(300,200); show(); } MenuItemaddMenuItem(Stringt1){ MenuItemitem=newMenuItem(t1); item.setActionCommand(t1); item.addActionListener(newactionListener()); returnitem; } classactionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringstr=e.getActionCommand(); t1.setText("Yourselectionis"+str); if(str.equals("Exit")){ setVisible(false);

  23. 14. 기타 GUI Components dispose(); System.exit(0); } } } classmouseListenerextendsMouseAdapter{ publicvoidmouseReleased(MouseEvente){ if(e.isPopupTrigger()){ pm.show(e.getComponent(),e.getX(),e.getY()); } } } classwindowListenerextendsWindowAdapter{ publicvoidwindowClosing(WindowEvente){ Objecto1=e.getSource(); if(o1==PopupMenuDemo.this){ setVisible(false); dispose(); System.exit(0); } } } } } 14.1.3 메뉴 (menu)

  24. 14. 기타 GUI Components • Dialog클래스 Dialog클래스는사용자에게간단한정보를디스플레이하거나정보를 입력받기 위하여사용되는윈도우파생클래스이다. [생성자] ①publicDialog(Frameparent) -parent는Dialog윈도우를제어하는Frame타입의부모윈도우를 나타낸다. ②publicDialog(Frameparent,booleanflag) -flag는생성된Dialog가modal(true)인지modaless인지를나타낸다. ③publicDialog(Frameparent,Stringtitle) -title은생성된Dialog윈도우의제목을지정한다. ④publicDialog(Frameparent,Stringtitle,booleanflag) -생성된dialog윈도우의제목과타입을설정한다. 14.1.3 메뉴 (menu)

  25. 14. 기타 GUI Components • [DialogBox를사용하는예제프로그램] importjava.applet.*; importjava.awt.*; importjava.awt.event.*; publicclassDialogDemoextendsAppletimplementsActionListener{ publicvoidinit(){ Buttonb=newButton("CreateFrame"); b.addActionListener(this); add(b); } publicvoidactionPerformed(ActionEventae){ MyFrame2mf=newMyFrame2("MyFrame"); mf.setSize(200,140); mf.show(); } } 14.1.3 메뉴 (menu)

  26. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • [DialogBox를사용하는예제프로그램] classMyFrame2extendsFrameimplementsActionListener{ Labellabel=newLabel("",Label.CENTER); MyFrame2(Stringtitle){ super(title); Buttonla=newButton("CreateDialog"); add(la,BorderLayout.CENTER); la.addActionListener(this); add(label,BorderLayout.SOUTH); addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEventwe){ setVisible(false); dispose(); System.exit(0); } }); }

  27. 14. 기타 GUI Components • [DialogBox를사용하는예제프로그램] publicvoidactionPerformed(ActionEventae){ Stringmessage="DoyoulikeDialogBox?"; MessageDialogmd= newMessageDialog(this,"MessageDialog",true,message); md.show(); if(md.answer()==true) label.setText("Yes,Youlikeit"); else label.setText("Oh!No!!!"); } } classMessageDialogextendsDialogimplementsActionListener{ Buttonyes,no; booleanYN; MessageDialog(Frameparent,Stringtitle,booleanmode,Stringmessage) {super(parent,title,mode); Panelpc=newPanel(); Labellabel=newLabel(message); pc.add(label); add(pc,"Center"); 14.1.3 메뉴 (menu)

  28. 14. 기타 GUI Components • [DialogBox를사용하는예제프로그램] Panelps=newPanel(); yes=newButton("Yes"); yes.addActionListener(this); ps.add(yes); no=newButton("No"); no.addActionListener(this); ps.add(no); add(ps,"South"); pack(); } publicvoidactionPerformed(ActionEvente){ Stringans=e.getActionCommand(); if(ans.equals("Yes"))YN=true; elseYN=false; dispose(); } publicbooleananswer(){ returnYN; } } 14.1.3 메뉴 (menu)

  29. 14. 기타 GUI Components • FileDialog클래스 -FileDialog는파일을선택할수있는다이얼로그를생성하는클래스 -모달타입 [생성자] ①publicFileDialog(Frameparent) -parent는다이어로그윈도우를제어하는부모프레임을지정한다. ②publicFileDialog(Frameparent,Stringtitle) -title은제목을지정한다. ③publicFileDialog(Frameparent,Stringtitle,intrw) -rw는파일을읽어올것(상수:LOAD)인지저장할것(상수:SAVE) 인지를지정한다. 14.1.3 메뉴 (menu)

  30. 14. 기타 GUI Components 14.1.3 메뉴 (menu) • FileDialog클래스 FileDialog클래스에서지원되는메소드를정리하면다음과같다. ①publicsynchronizedvoidsetDirectory(Stringdir) -파일다이얼로그에서디스플레이될디렉토리를설정한다. ②publicsynchronizedvoidsetFile(Stringfile) -파일다이얼로그에서특정파일(file)을선택한다. ③publicsynchronizedvoidsetFilenameFilter(FilenameFilterfilter) -파일다이얼로그에서사용될필터를설정한다.

  31. 14. 기타 GUI Components 14.1.3 메뉴 (menu) [파일다이얼로그예제프로그램] importjava.applet.*; importjava.awt.*; importjava.awt.event.*; publicclassFileDialogDemoextendsApplet{ publicvoidinit(){ MyFrame3my=newMyFrame3("Frame"); my.setSize(240,150);//SetFrameSize my.show();//SetFramevisible } } classMyFrame3extendsFrameimplementsActionListener{ MyFrame3(Stringtitle){ super(title); Buttonla=newButton("CreateFileDialog"); la.addActionListener(this); add(la);

  32. 14. 기타 GUI Components 14.1.3 메뉴 (menu) [파일다이얼로그예제프로그램] addWindowListener(newWindowAdapter() {//Wecanclosetheframe. publicvoidwindowClosing(WindowEventwe){ setVisible(false); dispose(); System.exit(0); } }); } publicvoidactionPerformed(ActionEventae){ FileDialogfd=newFileDialog(this,"FileDialog"); fd.setVisible(true); } }

  33. 14. 기타 GUI Components 14.1.3 메뉴 (menu)

More Related