Microsoft PowerPoint - java1-lecture11.ppt [호환 모드]

Similar documents
모든스윙컴포넌트에는텍스트옆에이미지를추가로표시할수있다. ImageIcon image = new ImageIcon("image.gif"); JLabel label = new JLabel(" 이미지레이블 "); label.seticon(image);

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

gnu-lee-oop-kor-lec10-1-chap10

11장.key

9장.key

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

강의자료

Microsoft PowerPoint - 04-UDP Programming.ppt

자바GUI실전프로그래밍2_장대원.PDF

제8장 자바 GUI 프로그래밍 II

PowerPoint Template

Microsoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx

No Slide Title

No Slide Title

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Java Programing Environment

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

오버라이딩 (Overriding)

슬라이드 1

Microsoft PowerPoint - java1-lecture10.ppt [호환 모드]

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

05-class.key

10장.key

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Microsoft PowerPoint - [JAVA프로그래밍]9장GUI

Microsoft PowerPoint 자바-AWT컴포넌트(Ch8).pptx

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java-03.pptx

JTable과 MVC(Model-View-Controller) 구조 - 모델-뷰-컨트롤러구조는데이터의저장과접근에대한제공은모델이담당하고, 화면표시는뷰, 이벤트의처리는컨트롤러가하도록각역할을구분한구조이다. 즉, 역할의분담을통하여상호간의영향을최소화하고각요소의독립성을보장하여독자

슬라이드 1

JMF3_심빈구.PDF

10 이벤트 처리와 그래픽 프로그래밍.key

PowerPoint 프레젠테이션

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - java2-lecture5.ppt [호환 모드]

12-file.key

PowerPoint Presentation

11-GUI.key

Microsoft Word - java18-1-final-answer.doc

PowerPoint 프레젠테이션

제8장 자바 GUI 프로그래밍 II

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

(Microsoft PowerPoint - java1-lecture7.ppt [\310\243\310\257 \270\360\265\345])

Chap12

DB 에데이터저장을위한입력창설계 - JLabel, JTextField, JButton 을이용한입력창설계 - 2 -

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

gnu-lee-oop-kor-lec06-3-chap7

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

09-interface.key

Microsoft Word - java19-1-final-answer.doc

중간고사

PowerPoint Presentation

Microsoft PowerPoint - java1-lecture11.ppt [호환 모드]

어댑터뷰

PowerPoint Presentation

PowerPoint 프레젠테이션

Java Coding Standard

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Microsoft PowerPoint - lec04_05.ppt [호환 모드]

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Chapter 1

Design Issues

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - 2강

Visual Basic 반복문

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

ch09

Microsoft PowerPoint - 12장_스윙 [호환 모드]

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

Cluster management software

01-OOPConcepts(2).PDF

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

Cluster management software

제11장 프로세스와 쓰레드

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

rmi_박준용_final.PDF

Spring Boot/JDBC JdbcTemplate/CRUD 예제

8장.그래픽 프로그래밍

PowerPoint 프레젠테이션

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Transcription:

Overview Swing Component 514760-1 2018 년봄학기 5/22/2018 박경신 JLabel, ImageIcon JTextField, JTextArea JButton, JCheckBox, JRadioButton JSlider, JComboBox JPanel, JScrollPane, JOptionPane JTable Timer JFileChooser, JMenu JDialog 사용자정의콤포넌트 스윙컴포넌트에이미지표시하기 모든스윙컴포넌트에는텍스트옆에이미지를추가로표시할수있다. ImageIcon image = new ImageIcon("image.gif"); JLabel label = new JLabel(" 이미지레이블 "); label.seticon(image); 이미지표시하기 public class ImageLabelTest extends JFrame implements ActionListener { private JPanel panel; private JLabel label; private JButton button; public ImageLabelTest() { settitle(" 이미지레이블 "); setsize(300,250); setdefaultcloseoperation(jframe.exit_on_close); panel = new JPanel(); label = new JLabel(" 이미지를보려면아래버튼을누르세요 "); button = new JButton(" 이미지레이블 "); ImageIcon icon = new ImageIcon("icon.gif"); button.seticon(icon); button.addactionlistener(this); panel.add(label); panel.add(button); add(panel); setvisible(true); ImageLabelTest t=new ImageLabelTest(); public void actionperformed(actionevent e) { ImageIcon dog = new ImageIcon("dog.gif"); label.seticon(dog); label.settext(null);

체크박스 체크박스 (check box) 란사용자가클릭하여서체크된상태와체크되지않은상태중의하나로만들수있는컨트롤 JCheckBox 의메소드 이름 설명 생성자 JCheckBox() 레이블이없는 Checkbox를생성한다. JCheckbox(String label) 지정된레이블의 Checkbox를생성한다. JCheckbox(String label, boolean sele cted) 지정된상태와레이블을가지는 Checkbox을생성한다. 메소드 String gettext() 체크박스에표시되는텍스트를가져 온다. Boolean isselected() void setselected(boolean value) 만약체크박스가선택되었으면 true 를반환한다. 매개변수가 true이면체크박스를체크상태로만든다. void settext(string text) 체크박스텍스트를설정한다. public class CheckBoxPanel extends JPanel implements ItemListener { JCheckBox[] buttons = new JCheckBox[3]; String[] fruits = { "apple", "grape", "orange" ; JLabel[] picturelabel = new JLabel[3]; ImageIcon[] icon = new ImageIcon[3]; public CheckBoxDemo() { super(new GridLayout(0, 4)); for (int i = 0; i < 3; i++) { buttons[i] = new JCheckBox(fruits[i]); buttons[i].additemlistener(this); picturelabel[i] = new JLabel(fruits[i] + ".gif"); icon[i] = new ImageIcon(fruits[i] + ".gif"); JPanel checkpanel = new JPanel(new GridLayout(0, 1)); for (int i = 0; i < 3; i++) JFrame frame = new JFrame("CheckBoxDemo"); checkpanel.add(buttons[i]); frame.setdefaultcloseoperation(jframe.exit_on_close); add(checkpanel); add(picturelabel[0]); CheckBoxPanel panel = new CheckBoxPanel(); add(picturelabel[1]); panel.setopaque(true); add(picturelabel[2]); frame.add(panel); public void itemstatechanged(itemevent e) { frame.setsize(500, 200); ImageIcon image = null; frame.setvisible(true); Object source = e.getitemselectable(); for (int i = 0; i < 3; i++) { if (source == buttons[i]) { if (e.getstatechange() == ItemEvent.DESELECTED) picturelabel[i].seticon(null); else picturelabel[i].seticon(icon[i]); 라디오버튼 라디오버튼은체크박스와비슷하지만하나의그룹안에서는한개의버튼만선택할수있다는점이다르다

라디오버튼 라디오버튼을생성한다. JRadioButton radio1 = new JRadioButton(" 선택 1"); JRadioButton radio2 = new JRadioButton(" 선택 2"); JRadioButton radio3 = new JRadioButton(" 선택 3"); ButtonGroup 객체를생성한다. ButtonGroup group = new ButtonGroup(); 라디오버튼들을 ButtonGroup 객체에추가한다. group.add(radio1); group.add(radio2); group.add(radio3); import javax.swing.*; import javax.swing.border.border; import java.awt.event.*; import java.awt.*; class RadioButtonFrame extends JFrame implements ActionListener { private JRadioButton small, medium, large; private JLabel text; private JPanel toppanel, sizepanel, resultpanel; public MyFrame() { settitle(" 라디오버튼테스트 "); setsize(300, 150); setdefaultcloseoperation(jframe.exit_on_close); toppanel = new JPanel(); JLabel label = new JLabel(" 어떤크기의커피를주문하시겠습니까?"); toppanel.add(label); add(toppanel, BorderLayout.NORTH); sizepanel = new JPanel(); small = new JRadioButton("Small Size"); medium = new JRadioButton("Medium Size"); large = new JRadioButton("Large Size"); ButtonGroup size = new ButtonGroup(); size.add(small); size.add(medium); size.add(large); small.addactionlistener(this); medium.addactionlistener(this); large.addactionlistener(this); sizepanel.add(small); sizepanel.add(medium); sizepanel.add(large); add(sizepanel, BorderLayout.CENTER); resultpanel = new JPanel(); text = new JLabel(" 크기가선택되지않았습니다."); text.setforeground(color.red); resultpanel.add(text); add(resultpanel, BorderLayout.SOUTH); setvisible(true); public void actionperformed(actionevent e) { if (e.getsource() == small) { text.settext("small 크기가선택되었습니다."); if (e.getsource() == medium) { text.settext("medium 크기가선택되었습니다."); if (e.getsource() == large) { text.settext("large 크기가선택되었습니다."); public class RadioButtonTest extends JFrame { new RadioButtonFrame(); 콤보박스 콤보박스 (combo box) 도여러항목중에서하나를선택하는데사용할수있다. 콤보박스메소드 콤보박스를생성하기위해서는먼저생성자중에서하나를골라서호출하여야한다. 생성자는비어있는콤보박스를생성한다. JComboBox combo = new JComboBox(); 여기에항목을추가하려면 additem() 메소드를사용한다. combo.additem( dog ); combo.additem( lion ); combo.additem( tiger );

public class ComboBoxFrame extends JFrame implements ActionListener { JLabel label; public ComboBoxFrame() { settitle(" 콤보박스 "); setdefaultcloseoperation(jframe.exit_on_close); setsize(300, 200); String[] animals = { "dog", "lion", "tiger" ; JComboBox animallist = new JComboBox(animals); animallist.setselectedindex(0); animallist.addactionlistener(this); label = new JLabel(); label.sethorizontalalignment(jlabel.center); changepicture(animals[animallist.getselectedindex()]); add(animallist, BorderLayout.PAGE_START); add(label, BorderLayout.PAGE_END); setvisible(true); public void actionperformed(actionevent e) { JComboBox cb = (JComboBox) e.getsource(); String name = (String) cb.getselecteditem(); changepicture(name); protected void changepicture(string name) { ImageIcon icon = new ImageIcon(name + ".gif"); label.seticon(icon); if (icon!= null) { label.settext(null); else { label.settext(" 이미지가발견되지않았습니다."); ComboBoxFrame frame=new ComboBoxFrame(); 경계만들기 경계 (border) 란시각적으로컴포넌트들을그룹핑할때사용하는장식적인요소 Border border = BorderFactory.createTitledBorder(" 크기 "); sizepanel.setborder(border); 텍스트필드 텍스트필드 (text field) 는입력이가능한한줄의텍스트필드를만드는데사용된다. 패스워드필드에사용자가암호를입력하면글자들이모두 * 문자로표시된다. 패스워드필드 패스워드필드에사용자가암호를입력하면글자들이모두 * 문자로표시된다. JTextField textfield = new JTextField(30); // 30 자크기의텍스트필드를만든다. JTextField textfield = new JTextField( Initial String"); // 초기화문자열 System.out.println(textField.getText()); textfield.settext("seoul");

텍스트영역 텍스트영역 (TextArea): 여러줄의텍스트가들어갈수있는컴포넌트 스크롤페인 텍스트영역에스크롤바를만들려면스크롤페인에텍스트영역을넣어야한다. textarea = new JTextArea(10, 30); // 텍스트영역을생성한다. JScrollPane scrollpane = new JScrollPane(textArea); // 슬라이더 슬라이더 (slider) 는사용자가특정한범위안에서하나의값을선택할수있는컴포넌트이다. public class SliderFrame extends JFrame implements ChangeListener { static final int INIT_VALUE = 15; private JButton buttonok; private JSlider slider; private JButton button; public SliderFrame() { JPanel panel; settitle(" 슬라이더테스트 "); setdefaultcloseoperation(jframe.exit_on_close); panel = new JPanel(); JLabel label = new JLabel(" 슬라이더를움직여보세요 ", JLabel.CENTER); label.setalignmentx(component.center_alignment); panel.add(label); slider = new JSlider(0, 30, INIT_VALUE); slider.setmajortickspacing(10); // 큰눈금간격 slider.setminortickspacing(1); // 작은눈금간격 slider.setpaintticks(true); // 눈금을표시한다. slider.setpaintlabels(true); // 값을레이블로표시한다. slider.addchangelistener(this); // 이벤트리스너를붙인다. panel.add(slider); button = new JButton(""); ImageIcon icon = new ImageIcon("dog.gif"); button.seticon(icon); button.setsize(init_value * 10, INIT_VALUE * 10); panel.add(button); add(panel); setsize(300, 300); setvisible(true); public void statechanged(changeevent e) { JSlider source = (JSlider) e.getsource(); if (!source.getvalueisadjusting()) { int value = (int) source.getvalue(); button.setsize(value * 10, value * 10); new SliderFrame();

파일선택기 파일선택기 (File Chooser) 는파일시스템을탐색하여파일이나디렉토리를선택하는 GUI 를제공한다. 파일선택기를표시하려면 JFileChooser 클래스를사용한다. public void actionperformed(actionevent e) { // 파일오픈 버튼에대한액션이벤트처리 if (e.getsource() == openbutton) { int returnval = fc.showopendialog(this); if (returnval == JFileChooser.APPROVE_OPTION) { File file = fc.getselectedfile(); // 실제파일을오픈한다. else { // 사용자취소 // 파일저장 버튼에대한액션이벤트처리 else if (e.getsource() == savebutton) { int returnval = fc.showsavedialog(this); if (returnval == JFileChooser.APPROVE_OPTION) { File file = fc.getselectedfile(); // 실제파일에저장한다. else { // 사용자취소 FileChooserTest frame = new FileChooserTest(); class TextAreaFrame extends JFrame implements ActionListener { protected JTextField textfield; protected JTextArea textarea; public MyFrame() { settitle("text Area Test"); setdefaultcloseoperation(jframe.exit_on_close); textfield = new JTextField(30); textfield.addactionlistener(this); textarea = new JTextArea(10, 30); textarea.seteditable(false); add(textfield, BorderLayout.NORTH); add(textarea, BorderLayout.CENTER); pack(); setvisible(true); public void actionperformed(actionevent evt) { String text = textfield.gettext(); textarea.append(text + "\n"); textfield.selectall(); textarea.setcaretposition(textarea.getdocument().getlength()); public class TextAreaTest extends JFrame { new TextAreaFrame(); 사용자가텍스트필드에텍스트를 입력하고엔터키를누르면이것을텍스트영역에추가하는프로그램을작성하여보자. Menu 메뉴 프로그램에서수행할수있는명령집합 계층적요소로구성된 user interface JMenuBar ( 최상위메뉴바 ) JMenuBar menubar = new JMenuBar(); this.setjmenubar(menubar); // this 프레임에메뉴바추가 JMenu JMenu filemenu = new JMenu( File ); filemenu.setmnemonic(keyevent.vk_f); menubar.add(filemenu); JMenuItem 명령을수행하거나서브메뉴를가지는항목 JMenuItem openmenuitem = new JMenuItem( Open, KeyEvent.VK_O); filemenu.add(openmenuitem); openmenuitem.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { );

Menu Dialog menubar File menu Photo menu Open menu item Save menu item Close menu item 대화상자 (JDialog) 다양한컨트롤을포함하고있는일종의윈도우 사용자로부터입력을받거나정보를출력 정적, 버튼, 편집등다양한컨트롤들을배치하고관리하는윈도우.. menu item.. menu item Message Dialog void JOptionPane.showMessageDialog(Component, Object, String, int, Icon) JOptionPane.showMessageDialog(null, "Simple Information Message"); Message Dialog JOptionPane.showMessageDialog(null, "Uh-oh!", "Error", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, 8.9, "This is not an integer.", JOptionPane.PLAIN_MESSAGE); ImageIcon icon = new ImageIcon("src/images/turtle64.png"); JOptionPane.showMessageDialog(null, "I like turtles.", "Customized Dialog", JOptionPane.INFORMATION_MESSAGE, icon);

Message Dialog int JOptionPane.showConfirmDialog(Component, Object, String, int, int, Icon) int input = JOptionPane.showConfirmDialog(null, "Do you like bacon?"); // 0:yes 1:no 2:cancel Message Dialog int input = JOptionPane.showConfirmDialog(null, "Do you want to proceed?", "Select an Option...",JOptionPane. OK_CANCEL_OPTION); // 0:ok 2:cancel int input = JOptionPane.showConfirmDialog(null, "Click ok if you are ok", "Be ok!", JOptionPane.DEFAULT_OPTION); // 0:ok ImageIcon icon = new ImageIcon("src/images/turtle64.png"); int input = JOptionPane.showConfirmDialog(null, "Do you like turtles?", "Be honest...",joptionpane.yes_no_cancel_option, JOptionPane.QUESTION_MESSAGE, icon); Message Dialog Object JOptionPane.showInputDialog(Component, Object, String, int, Icon, Object[], Object) String m = JOptionPane.showInputDialog("Anyone there?"); Message Dialog String[] options = {"I adore turtles", "Yes", "Maybe", "Urm...", "No", "Hate them"; ImageIcon icon = new ImageIcon("src/images/turtle32.png"); String m = (String)JOptionPane.showInputDialog(null, "Do you like turtles??", "I like turtles", JOptionPane.QUESTION_MESSAGE, icon, options, options[2]); String m = JOptionPane.showInputDialog("Anyone there?", 42); if(m.isempty() m.equals("42")){ frame.closeit();

JFileChooser int JFileChooser.showOpenDialog(Component) JFileChooser int JFileChooser.showSaveDialog(Component) public File[] openfiledialog() { JFileChooser filechooser = new JFileChooser(); filechooser.setmultiselectionenabled(true); int returnvalue = filechooser.showopendialog(null); if (returnvalue == JFileChooser.APPROVE_OPTION) { System.out.println("openFile"); File[] selectedfiles = filechooser.getselectedfiles(); return selectedfiles; else { System.out.println("file not opened"); return null; public File[] savefiledialog() { JFileChooser filechooser = new JFileChooser(); int returnvalue = filechooser.showsavedialog(null); if (returnvalue == JFileChooser.APPROVE_OPTION) { System.out.println( savefile"); String selectedfile = filechooser.getselectedfile().getabsolutepath().tostring(); return selectedfile; else { System.out.println("file not opened"); return null; JFileChooser 주요속성설명 File getselectedfile() 대화상자에서선택한모든파일 ( 들 ) 반환 File[] getselectedfiles() setcurrentdirectory(file) 시작디렉터리지정 setfilefilter(filefilter) 대화상자에서 파일형식으로저장 또는 파일형식 상자에표시되는선택옵션을결정하는현재파일이름필터문자열을가져오거나설정 Text Document(*.txt) *.txt + All Files *.* All Image Files *.bmp;*.gif;*.jpg;*.png setfileselectionmode(int) setmultiselectionenabled( boolean) FILES_ONLY 파일만선택가능 DIRECTORIES_ONLY 디렉토리만선택가능 FILES_AND_DIRECTORIES 파일과디렉토리선택가능 대화상자에서여러개의파일을선택가능여부지정 Custom Dialog 사용자정의대화상자 Modeless modeless dialog를닫지않더라도다른윈도우사용을막지않음 Document-modal document-modal dialog를닫지않으면같은 document 안의 ( 자기자식윈도우만제외하고 ) 모든윈도우사용을막음. Application-modal application-modal dialog를닫지않으면같은 application 안의 ( 자기자식윈도우만제외하고 ) 모든윈도우사용을막음 Toolkit-modal type toolkit-modal dialog 를닫지않으면같은 toolkit 안의 ( 자기자식윈도우만제외하고 ) 모든윈도우사용을막음.

Custom Component 사용자정의콤포넌트작성 기존 Swing Component 를상속받아확장 Number만입력하는 TextField를작성 (Custom TextField) NumberTextField는기존 JTextField를상속받아확장 public void processkeyevent(keyevent e) { char c = e.getkeychar(); if (!Character.isDigit(c) &&!isvalidsign(c) && c!= '.' && c!= '\b') { e.consume(); super.processkeyevent(e); return; private boolean isvalidsign(char c) { if( (gettext() == null "".equals(gettext().trim()) ) && c == '-') return true; return false; AnimatedImagePanel (Custom Panel) public class ImagePanel extends JPanel implements ActionListener { public ImagePanel() { loadimages(); timer = new Timer(500, this); public void paintcomponent(graphics g) { super.paintcomponent(g); Graphics2D g2 = (Graphics2D) g; if (images[currentimage]!= null) g2.drawimage(images[currentimage], 0, 0, this); public void actionperformed(actionevent e) { // timer tick currentimage = (currentimage + 1) % totalimages; repaint();