840 likes | 1.34k Views
Chap 15. Swing. 15. Swing. - AWT 를 한단계 발전시킨 자바 그래픽 사용자 인터페이스 패키지 - Java 1.2 에는 표준 패키지로 포함 - AWT 에 비해 훨씬 화려한 GUI 프로그래밍 가능 - Swing 은 JFC 의 일부 - JFC 는 Java Foundation Classes 의 약자 . - JFC 의 특징. 15. Swing. 15. Swing. 15.1 Swing 응용 프로그램의 구조. 15. Swing.
E N D
15. Swing - AWT를 한단계 발전시킨 자바 그래픽 사용자 인터페이스 패키지 - Java 1.2에는 표준 패키지로 포함 - AWT에 비해 훨씬 화려한 GUI 프로그래밍 가능 - Swing은 JFC의 일부 - JFC는 Java Foundation Classes의 약자. - JFC의 특징
15. Swing 15.1 Swing 응용 프로그램의 구조
15. Swing 15.1 Swing 응용 프로그램의 구조 ①Heavyweight컨테이너 Swing응용프로그램의최상위레벨은중량(heavyweight)컨테이너를 포함하고있으며,응용프로그램의메인윈도우는반드시중량컨테이 너에부착되어야한다.JFrame,JApplet등이중량컨테이너에속한다. ②JRootPane 중량컨테이너는루트페인(rootpane)이라불리는객체를가지고있으 며,루트페인은툴팁(tooltip)이나 드래그 & 드롭과같은중요기능을 지원한다. ③JLayeredPane 계층페인(layeredpane)은메뉴바와컨텐츠페인(contentpane)을관리 하며,컴포넌트간의오버래핑을가능하게해준다.
15. Swing 15.1 Swing 응용 프로그램의 구조 ④JMenuBar 메뉴바는JMenuBar클래스에의해서구현되며,일반적인메뉴바 기능을지원한다. ⑤contentPane 컨텐츠페인(contentPane)은중량컨테이너에부착되는모든컴포넌 트의접속창역할을한다.AWT와는달리Swing에서는먼저중량 컨테이너의layout관리자를설정하거나중량컨테이너에컴포넌트 를부착하기위해서는먼저컨텐츠페인을구하여야한다.컨텐츠 페인을구한후,layout관리자를설정하는예는다음과같다. Componentcp=getContentPane(); cp.setLayout(newBorderLayout());
15. Swing 15.1 Swing 응용 프로그램의 구조 또한컨텐츠페인을구한후,버튼과같은컴포넌트를중량 컨테이너에부착하는예는다음과같다. Containercp=getContentPane(); cp.add(newButton("push")); 또는간단하게다음과같이한줄로쓸수있다. getContentPane().add(newButton("push"));
15. Swing 15.2 Swing프로그램작성순서 ①Swing프로그램작성에필요한라이브러리를import한다. importjavax.swing.*; importjavax.swing.event.*; importjava.awt.*; importjava.awt.event.*; ②적절한중량컨테이너를설정한다.응용프로그램의메인윈도우는중량컨테이너에만포함될수있다.JFrame,JDialog,JApplet,JWindow등이중량컨테이너에속한다. ③필요에따라경량컨테이너(lightweightContainer)를설정한다.JPanel,JScrollPane,JSplitPane,JTabbedPane,JToolbar등이경량컨테이너에속한다. ④컨테이너의레이아웃을설정한다.필요한컴포넌트를설정하고컨테이너에부착시킨다.중량컨테이너에컴포넌트를부착하거나레이아웃을설정할때에는먼저ContentPane을구하여야한다.경량컨테이너에서는ContentPane을구할필요가없다.
15. Swing 15.2 Swing프로그램작성순서 ④컨테이너의레이아웃을설정한다.필요한컴포넌트를설정하고컨테이너에부착시킨다.중량컨테이너에컴포넌트를부착하거나레이아웃을설정할때에는먼저ContentPane을구하여야한다.경량컨테이너에서는ContentPane을구할필요가없다. ⑤이벤트처리가필요한컴포넌트의이벤트처리루틴을작성한후,컴포넌트를등록한다. ⑥컨테이너의위치와크기를설정하고,setVisible(Ture)또는show()메소드를사용하여컨테이너가보여지도록한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.1JFrame -JFrame은Swing의최상위윈도우이다. -JFrame은중량컨테이너(HeavyweightContainer)로서응용프로그램은 반드시하나이상의중량컨테이너를가져야한다. -JFrame객체에버튼이나레이블과같은컴포넌트를부착할수있다. -JFrame클래스는다음과같은생성자와메소드를지원한다. o생성자 ①JFrame() ②JFrame(Stringtitle) -타이틀을title로설정한JFrame객체를생성한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.1JFrame o메소드 ①voidsetTitle(Stringtitle) -프레임의타이틀을설정한다. ②voidsetSize(intwidth,intheight) -프레임의크기를설정한다.프레임의기본크기는(0,0)이다. ③voidsetLocation(intx,inty) -프레임의위치를설정한다.프레임의기본위치는좌상단이다. ④voidshow()또는setVisible(true) -프레임을보이게한다.생성된프레임은자동으로보이지않는다. ⑤voidsetLayout(LayoutManagerm) -프레임의layout을설정한다. ⑥voidaddWindowListenenr(WindowAdapterwa) -윈도우이벤트를처리하기위해WindowAdapter객체에등록한다.
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] importjava.awt.event.*; importjavax.swing.*; classJFrameDemoextendsJFrame{ JFrameDemo(){ setTitle("JFrameDemo!"); setSize(400,180);//프레임의크기 setLocation(200,80);//프레임의위치설정 } publicstaticvoidmain(Stringargs[]) { JFrameDemofm=newJFrameDemo(); fm.show(); fm.addWindowListener(//종료버튼클릭처리 newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0); } } ); } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.2JLabel o생성자 ①JLabel(Stringtext) -주어진텍스트를보여주는레이블을생성한다. ②JLabel(Iconimage) -주어진아이콘을보여주는레이블을생성한다. ③JLabel(Stringtext,inthorizontalAlignment) ④JLabel(Iconimage,inthorizontalAlignment) ⑤JLabel(Stringtext,Iconimage,inthorizontalAlignment) -주어진텍스트와아이콘을보여주는레이블을생성한다. -수평정렬은JLabel.LEFT,JLabel.RIGHT,JLabel.CENTER등을사용할 수있다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.2JLabel o지원되는메소드 ①voidsetHorizontalAlignment(intalignment) -수평정렬을설정한다. ②voidsetVerticalAlignment(intalignment) -수직정렬을설정한다. -인자는JLabel.TOP,JLabel.BOTTOM,JLable.CENTER등을사용할수 있다. ③voidsetHorizontalTextPosition(inttextPosition) -아이콘에대한텍스트의수평상대위치를설정한다. -인자로JLabel.LEFT,JLabel.RIGHT,JLabel.CENTER등을사용할수 있다. ④voidsetVerticalTextPosition(inttextPosition) -아이콘에대한텍스트의수직상대위치를설정한다. -인자로JLabel.TOP,JLabel.BOTTOM,JLable.CENTER등을사용할수 있다. ⑤voidsetIconTextGap(intgap) -아이콘과텍스트의간격을pixel수로나타낸다.
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classJLabel1extendsJFrame{ JLabel1(){ super("JLabelDemo"); JLabell1,l2,l3,l4; getContentPane().setLayout(newGridLayout(2,2)); //그래픽파일로이미지아이콘생성 ImageIconicon=newImageIcon("./image/tools.gif"); l1=newJLabel("Left-Noimage",JLabel.LEFT); l2=newJLabel("Normal",icon,JLabel.CENTER); l3=newJLabel("Bottom",icon,JLabel.CENTER); l3.setVerticalTextPosition(JLabel.BOTTOM); l3.setHorizontalTextPosition(JLabel.CENTER); l4=newJLabel("Top",icon,JLabel.RIGHT); l4.setVerticalTextPosition(JLabel.TOP); l4.setHorizontalTextPosition(JLabel.CENTER);
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] Containercp=getContentPane(); cp.add(l1);//레이블부착 cp.add(l2); cp.add(l3); cp.add(l4); } publicstaticvoidmain(String[]args){ JLabel1f=newJLabel1(); f.setSize(400,250);//frame크기설정 f.setVisible(true);//frame을보이게함 //윈도우종료시실행종료 f.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0);} }); }}
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.3Border Border는Swing컴포넌트의경계선의모양을설정해주는클래스이다.Border 를사용하면컴포넌트의경계선에다양한모양을설정할수있다. Border를 사용하기위해서는프로그램시작부분에서javax.swing.border패키지를별 도로선언하여야한다.
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.border.*;//보더패키지수입 publicclassBorderSwingextendsJFrame{ JLabelnoborder,raised,etched,title1; JLabeltitle2,lowered,line,matte; publicBorderSwing(){ super("SwingBorders"); getContentPane().setLayout(newGridLayout(0,2,10,10)); noborder=newJLabel("NoBorder",JLabel.CENTER); raised=newJLabel("RaisedBorder",JLabel.CENTER); raised.setBorder(newBevelBorder(BevelBorder.RAISED)); lowered=newJLabel("LoweredBorder",JLabel.CENTER); lowered.setBorder(newSoftBevelBorder(SoftBevelBorder.LOWERED)); line=newJLabel("LineBorder",JLabel.CENTER); line.setBorder(newLineBorder(Color.red));
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] etched=newJLabel("EtchedBorder",JLabel.CENTER); etched.setBorder(newEtchedBorder()); title1=newJLabel("TitleBorder",JLabel.CENTER); title1.setBorder(newTitledBorder("Hello")); title2=newJLabel("TitleBorder2",JLabel.CENTER); title2.setBorder(newTitledBorder(newTitledBorder("Hello!"), "World",TitledBorder.RIGHT,TitledBorder.BOTTOM)); matte=newJLabel("MatteBorder",JLabel.CENTER); matte.setBorder(newMatteBorder(4,12,17,25,Color.green)); Containercp=getContentPane(); cp.add(noborder); cp.add(line); cp.add(raised); cp.add(lowered); cp.add(etched); cp.add(title1); cp.add(title2); cp.add(matte); }
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] publicstaticvoidmain(Stringargs[]){ BorderSwingfm=newBorderSwing(); fm.setSize(450,350); fm.setVisible(true); fm.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0);} }); } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.4Tooltip 버튼의툴팁설정예 JButtonb=newJButton("buttonwithtooltip"); b.setToolTipText("ThisisaButton"); [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classToolTipTestextendsJFrame{ ToolTipTest(){ super("ToolTipDemo"); JLabell1,l2; getContentPane().setLayout(newGridLayout(0,2)); //그래픽파일로이미지아이콘생성 ImageIconicon=newImageIcon("./image/tools.gif");
15. Swing 15.3 Swing의 주요 컴포넌트 l1=newJLabel("NOTOOLTIP",icon,JLabel.CENTER); l1.setVerticalTextPosition(JLabel.CENTER); l1.setHorizontalTextPosition(JLabel.LEFT); l2=newJLabel("Withtooltip",icon,JLabel.CENTER); l2.setVerticalTextPosition(JLabel.TOP); l2.setHorizontalTextPosition(JLabel.CENTER); l2.setToolTipText("ThisisToolTip"); Containercp=getContentPane(); cp.add(l1);//레이블부착 cp.add(l2); } publicstaticvoidmain(String[]args){ ToolTipTestf=newToolTipTest(); f.setSize(360,120);//frame크기설정 f.setVisible(true);//frame을보이게함 //윈도우종료시실행종료 f.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0);} }); }}
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.5JButton o생성자 ①JButton() ②JButton(Iconicon) ③JButton(Stringtext) ④JButton(Stringtext,Iconicon)
15. Swing 15.3 Swing의 주요 컴포넌트 o지원되는메소드 ①StringgetText() voidsetText(Stringtext) -버튼의텍스트를설정하거나반환할때사용한다. ②IcongetIcon() voidsetIcon(Iconicon) -버튼의아이콘을설정하거나반환할때사용한다. ③intgetHorizontalAlignment() voidsetHorizontalAlignment(intarg) -버튼의수평위치를설정하거나반환할때사용하며, -사용되는인자arg는LFFT,CENTER,RIGHT이허용된다. ④intgetVerticalAlignment() voidsetVerticalAlignment(intarg) -버튼의수직위치를설정하거나반환할때사용하며, -사용되는인자arg는TOP,CENTER,BOTTOM이허용된다.
15. Swing 15.3 Swing의 주요 컴포넌트 o지원되는메소드 ⑤intgetHorizontalTextPosition() voidsetHorizontalTextPosition(intposition) intsetVerticalTextPosition() voidsetVerticalTextPosition() -아이콘위치에따른텍스트의상대적위치를설정하는데사용 -텍스트의수평위치는LEFT,CENTER,RIGHT를사용 -텍스트의수직위치는TOP,CENTER,BOTTOM를사용 ⑥voidsetMnemonic(charc) -마우스클릭을대신하는단축키를설정 ⑦voidsetDisabledIcon(Iconicon) -버튼이비활성화되었을때,아이콘을변경시키고자할때 ⑧voidsetPressedIcon(Iconicon) voidsetRolloverIcon(Iconicon)
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classButtonTestextendsJFrame{ JButtonb1,b2; publicButtonTest() { super("JButtonTest"); Containerc=getContentPane(); c.setLayout(newGridLayout(1,2)); //버튼b1생성 b1=newJButton("TextButton"); c.add(b1); IconredIcon=newImageIcon("./image/red.gif"); IconblueIcon=newImageIcon("./image/blue.gif"); IcongreenIcon=newImageIcon("./image/green.gif");
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] //버튼b2생성 b2=newJButton("IconButton",greenIcon); b2.setRolloverIcon(blueIcon);//버튼위에마우스가놓일때녹색 b2.setPressedIcon(redIcon);//버튼을눌렀을때빨간아이콘 c.add(b2); ButtonHandlerhandler=newButtonHandler(); b1.addActionListener(handler); b2.addActionListener(handler); setSize(300,120); show(); } publicstaticvoidmain(Stringargs[]) { ButtonTestfm=newButtonTest(); fm.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0); } } ); }
15. Swing 15.3 Swing의 주요 컴포넌트 [예제프로그램] //내부이벤트처리루틴:다이얼로그 privateclassButtonHandlerimplementsActionListener{ publicvoidactionPerformed(ActionEvente) { JOptionPane.showMessageDialog(null, e.getActionCommand()+"ispressed"); //getActionCommand()는기본적으로버튼레이블을반환 } } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.6JCheckBox o생성자 ①JCheckBox(Iconicon) JCheckBox(Iconicon,booleanselected) -초기선택여부를결정가능 ②JCheckBox(Stringlabel) JCheckBox(Stringlabel,booleanselected) -지정된문자열을표시하는체크박스 ③JCheckBox(Stringlabel,Iconicon) JCheckBox(Stringlabel,Iconiconbooleanselected) -지정된문자열과아이콘을표시하는체크박스생성 o지원되는메소드 ①voidsetIcon(Iconicon) -체크박스의기본아이콘을설정. ②voidsetSelectedIcon(Iconicon) -체크박스가선택되었을때의아이콘을설정. ③booleanisSelected() -체크박스의선택여부를반환한다. ④voidsetSelected(booleanb) -인자b에따라체크박스의선택여부를설정.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.6JCheckBox [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassCheckBoxTestextendsJFrame{ JTextFieldt; JCheckBoxred,green,blue; publicCheckBoxTest() { super("JCheckBoxTest"); Containerc=getContentPane(); c.setLayout(newFlowLayout()); t=newJTextField("redisselected",20); c.add(t); red=newJCheckBox("Red",true); green=newJCheckBox("Green"); blue=newJCheckBox("Blue",newImageIcon("./image/blue.gif")); blue.setSelectedIcon(newImageIcon("./image/pink.gif"));
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.6JCheckBox [예제프로그램] c.add(red);c.add(green);c.add(blue); CheckBoxHandlerhandler=newCheckBoxHandler(); red.addItemListener(handler); green.addItemListener(handler); blue.addItemListener(handler); setSize(275,100); show(); } publicstaticvoidmain(Stringargs[]) { CheckBoxTestapp=newCheckBoxTest(); app.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0);} }); }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.6JCheckBox [예제프로그램] privateclassCheckBoxHandlerimplementsItemListener{ Stringmesg=""; publicvoiditemStateChanged(ItemEvente) {JCheckBoxcb=(JCheckBox)e.getSource(); if(cb==red){mesg="Red";} elseif(cb==green){mesg="Green";} else{mesg="Blue";} //상수ItemEvent.DESELECTED도지원된다. if(e.getStateChange()==ItemEvent.SELECTED) {mesg+="isselected";} else {mesg+="isdeselected";} t.setText(mesg); } } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.7JRadioButton o생성자 ①JRadioButton(Iconicon) JRadioButton(Iconicon,booleanselected) -지정된아이콘을표시하는라디오버튼생성 ②JRadioButton(Stringlabel) JRadioButton(Stringlabel,booleanselected) -지정된문자열을표시하는라디오버튼생성 ③JRadioButton(Stringlabel,Iconicon) JRadioButton(Stringlabel,Iconiconbooleanselected) -지정된문자열과아이콘을표시하는라디오버튼생성 o지원되는메소드 ①voidsetIcon(Iconicon) -라디오버튼의기본아이콘을설정. ②voidsetSelectedIcon(Iconicon) -라디오버튼이선택되었을때의아이콘을설정. ③booleanisSelected() -라디오버튼의선택여부를반환. ④voidsetSelected(booleanb) -인자b에따라라디오버튼의선택여부를설정.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.7JRadioButton [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classRadioTestextendsJFrame{ JTextFieldt; JCheckBoxred,green,blue; ButtonGroupgroup1; publicRadioTest() { super("RadioButtonTest"); Containerc=getContentPane(); c.setLayout(newFlowLayout()); t=newJTextField("NoOneisselected",20); c.add(t); red=newJCheckBox("Red",newImageIcon("./image/red.gif"),false); green=newJCheckBox("Green",newImageIcon("./image/green.gif"),false); blue=newJCheckBox("Blue",newImageIcon("./image/blue.gif"),false);
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.7JRadioButton [예제프로그램] ImageIconicon=newImageIcon("./image/pink.gif"); red.setSelectedIcon(icon); green.setSelectedIcon(icon); blue.setSelectedIcon(icon); c.add(red);c.add(green);c.add(blue); group1=newButtonGroup();//버튼grouping group1.add(red); group1.add(green); group1.add(blue); CheckBoxHandlerhandler=newCheckBoxHandler(); red.addItemListener(handler); green.addItemListener(handler); blue.addItemListener(handler); setSize(275,100); show(); }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.7JRadioButton [예제프로그램] publicstaticvoidmain(Stringargs[]) { RadioTestapp=newRadioTest(); app.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) { System.exit(0); } } ); } privateclassCheckBoxHandlerimplementsItemListener{ Stringmesg=""; publicvoiditemStateChanged(ItemEvente) {JCheckBoxcb=(JCheckBox)e.getSource(); if(cb==red){mesg="Red";} if(cb==green){mesg="Green";} if(cb==blue){mesg="Blue";} t.setText(mesg+"isselected."); } } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.8JComboBox o생성자 ①JComboBox() -아이템이설정되지않은콤보박스를만든다. ②JComboBox(Object[]list) JComboBox(Vectorlist) -객체의배열이나백터객체를사용하여콤보박스를만든다. o지원되는메소드 ①voidsetEditable(booleanb) -인자b에따라콤보박스를수정가능/불가능하게설정한다. ②voidaddItem(Objectitem) -콤보박스에item을추가한다. ③voidinsertItemAt(Objectitem,intindex) -주어진index에item을삽입한다. ④voidremoveItem(Objectitem) -주어진item을아이템리스트에서삭제한다. ⑤voidremoveAllItems() -모든아이템을삭제한다. ⑥ObjectgetSelectedItem() -현재선택된객체를반환한다. ⑦intgetSelectedIndex() -현재선택된인덱스를반환한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.8JComboBox [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classComboBoxTestextendsJFrame{ JComboBoxcolors; JLabellabel; Stringnames[]= {"red.gif","green.gif","pink.gif","blue.gif"}; Stringpath="./image/"; privateIconicons[]= {newImageIcon(path+names[0]), newImageIcon(path+names[1]), newImageIcon(path+names[2]), newImageIcon(path+names[3])};
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.8JComboBox [예제프로그램] publicComboBoxTest() { super("TestJComboBox"); Containercp=getContentPane(); cp.setLayout(newGridLayout(2,1)); label=newJLabel(icons[0]); cp.add(label); colors=newJComboBox(names); colors.setToolTipText("ThisisaComboBox"); colors.addItemListener( newItemListener(){ publicvoiditemStateChanged(ItemEvente) {label.setIcon( icons[colors.getSelectedIndex()]); } } );
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.8JComboBox [예제프로그램] cp.add(colors); pack(); setSize(240,120); setVisible(true); } publicstaticvoidmain(Stringarg[]) { ComboBoxTestfm=newComboBoxTest(); fm.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0); } } ); } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList -JList는JComboBox와비슷 -다중선택이가능하고하나이상의아이템을디스플레이가능 -JList는AWT의List와유사하지만스크롤바가자동생성안됨 -JList객체에스크롤을추가하기위해서는JScrollPane클래스를 이용. o생성자 ①JList(Object[]list) -주어진객체배열로새로운리스트를생성한다. ②JList(Vectorlist) -주어진백터를이용하여새로운리스트를생성한다. ③JList(ListModelmodel) -주어진모델을사용하여새로운리스트를생성한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList o지원되는메소드 ①voidsetListData(Object[]list) voidsetListData(Vector[]list) -객체배열을이용해서리스트데이터를설정한다. ②voidsetListData(ListModelmodel) -주어진모델을사용해서리스트의모델을설정한다. ③voidsetSelectionMode(intselMode) intgetSelectionMode() -리스트의아이템선택모드를설정하거나반환한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList ④intgetSelectedIndex() int[]getSelectedIndices() -현재선택된아이템의인덱스(또는인덱스의배열)를반환한다. ⑤ObjectgetSelectedValue() Object[]getSelectedValues() -현재선택된객체또는객체의배열을반환한다. ⑥booleanisSelectedIndex(intindex) -주어진인덱스의아이템이선택되었으면true,아니면false를반 환 한다. ⑦voidsetSelectedIndex(intindex) voidsetSelectedIndices(int[]indices) -주어진인덱스또는인덱스배열을선택된상태로만든다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList [예제프로그램] importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.event.*; classJListDemoextendsJFrame implementsListSelectionListener{ JListlst1,lst2; JLabellabel; Containercp; String[]data={"HanSung","Seoul","YonSei","Korea", "MIT","Harvard","Oxford","Yale"}; publicJListDemo(){ super("JListTest"); cp=getContentPane(); cp.setLayout(newFlowLayout());
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList [예제프로그램] lst1=newJList(data);//두개의JList생성 lst2=newJList(data); lst1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); lst2.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); //lst2는shift키를이용multiple선택가능 //MULTIPLE_INTERVAL_SELECTION도설정가능 lst2.setVisibleRowCount(4); JScrollPanesp=newJScrollPane(lst2);//lst2스크롤창생성 label=newJLabel("PrintinDOS창"); lst1.addListSelectionListener(this);//this는리스너구현객체가 lst2.addListSelectionListener(this);//실행중인객체임을표시 cp.add(lst1); cp.add(label); cp.add(sp); setSize(120,300);show(); }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList [예제프로그램] publicvoidvalueChanged(ListSelectionEvente) { Stringtemp=data[lst1.getSelectedIndex()]; System.out.println("FirstJList:"+temp); System.out.print("SecondJLIst:"); int[]selected=lst2.getSelectedIndices(); for(inti=0;i<selected.length;i++) { System.out.print(data[selected[i]]+""); } System.out.println(); } publicstaticvoidmain(Stringargs[]) { JListDemofm=newJListDemo(); fm.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) {System.exit(0); } } ); } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.9JList [도스창의실행결과] C:\>javaJListDemo FirstJList:YonSei SecondJLIst:Seoul FirstJList:YonSei SecondJLIst:SeoulYonSei FirstJList:YonSei SecondJLIst:SeoulYonSeiKorea FirstJList:YonSei SecondJLIst:SeoulYonSeiKorea
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.10JSlider o생성자 ①JSlider(intmin,intmax) -주어진최소값과최대값을가지는JSlider를생성한다. ②JSlider(intmin,intmax,intinit_value) -주어진최소값,최대값,초기값을가지는JSlider를생성한다. ③JSlider(intorientation,intmin,intmax,intinit_value) -원하는방향즉수직(JSlider.VERTICAL)또는수평(JSlider.HORIZON TAL)의JSlider객체를생성한다. o메소드 ①intgetValue() voidsetValue(intvalue) -현재JSlider의값을설정하거나반환한다. ②voidsetMaximum(intmax) voidsetMinimun(intmin) -현재JSlider의최대값또는최소값을설정한다. ③setPaintLabels(booleanb) -JSlider의레이블표시여부를인자b로결정한다. ④setLabelTable(Hashtableht) -주어진Hashtable을사용하여레이블을결정한다. ⑤setMajorTickSpacing(intm) setMinorTickSpacing(intm) -주눈금또는보조눈금의간격을설정한다. ⑥setPaintTicks(booleanb) -눈금을디스플레이할것인지를인자b로결정한다.
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.10JSlider [예제프로그램] publicvoidstateChanged(ChangeEvente){//이벤트처리메소드 JSliders=(JSlider)e.getSource(); slider2.setValue(2*s.getValue()); } publicstaticvoidmain(String[]args){ JSliderDemomf=newJSliderDemo(); mf.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); }}); mf.pack(); mf.setSize(400,180); mf.setVisible(true); } }
15. Swing 15.3 Swing의 주요 컴포넌트 15.3.11JTextComponent o지원되는메소드 ①voidcopy() voidcut() -현재선택된텍스트를시스템클립보드로복사하거나이동시킨다. ②voidpaste() -시스템클립보드의내용을문서로복사한다. ③intgetCaretPosition() voidsetCaretPosition(intpos) -현재의커릿의위치를설정하거나반환한다. ④intgetSelectionStart() intgetSelectionEnd() -선택된영역의처음또는끝위치를돌려준다. ⑤voidselect(intstart,intend) voidselectAll() -주어진범위의문자들을선택상태로만들거나모든텍스트를선택 한다. ⑥voidsetSelectionStart(intstart) voidsetSelectionEnd(intend) -선택영역의처음또는끝위치를설정한다. ⑦StringgetText() -텍스트컴포넌트의텍스트를반환한다. ⑧StringgetSelectedText() -선택된텍스트를반환한다.