PowerPoint 프레젠테이션

Similar documents
11장.key

9장.key

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

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

PowerPoint 프레젠테이션

10장.key

No Slide Title

Microsoft PowerPoint - 14주차 강의자료

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

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

PowerPoint 프레젠테이션

오버라이딩 (Overriding)

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 04-UDP Programming.ppt

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

No Slide Title

강의자료

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Java Programing Environment

PowerPoint Presentation

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

PowerPoint Template

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

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

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

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

슬라이드 1

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

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

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

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

PowerPoint Presentation

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

11-GUI.key

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

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

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

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

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

제11장 프로세스와 쓰레드

Microsoft PowerPoint - Java-03.pptx

슬라이드 1

Cluster management software

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

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

PowerPoint 프레젠테이션

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

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

PowerPoint Presentation

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

PowerPoint 프레젠테이션

PowerPoint Presentation

Cluster management software

연습문제이론홀수정답

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

Design Issues

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

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

어댑터뷰

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

09-interface.key

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Spring Boot

중간고사

슬라이드 1

Microsoft PowerPoint - 2강

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밊

Chap12

운동시뮬레이션 강의 소개

PowerPoint 프레젠테이션

Java ...

쉽게

PowerPoint 프레젠테이션

02 C h a p t e r Java

Visual Basic 반복문

쉽게 풀어쓴 C 프로그래밍

tiawPlot ac 사용방법

PowerPoint Presentation

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Transcription:

명품 JAVA Essential 1

2 학습목표 1. 스윙컴포넌트종류이해 2. JLabel로문자열과이미지출력 3. JButton으로버튼만들기 4. JCheckBox로체크박스만들기 5. JRadioButton으로라디오버튼만들기 6. JTextField로한줄입력창만들기 7. JTextArea로여러줄의입력창만들기 8. JList로리스트만들기 9. JComboBox로콤보박스만들기 10. 메뉴만들기 11. 3개의유용한팝업다이얼로그활용

자바의 GUI 프로그래밍방법 3 자바의 GUI 프로그래밍방법 2 종류 컴포넌트기반 GUI 프로그래밍 스윙컴포넌트를이용하여쉽게 GUI를구축 자바에서제공하는컴포넌트의한계를벗어나지못함 그래픽기반 GUI 프로그래밍 그래픽을이용하여 GUI 구축 개발자가직접그래픽으로화면을구성하는부담 독특한 GUI를구성할수있는장점 GUI 처리의실행속도가빨라, 게임등에주로이용

컴포넌트기반 GUI 프로그래밍에사용되는스윙컴포넌트 4 * 스윙컴포넌트는이름이모두 J 자로시작한다.

스윙컴포넌트의공통메소드, JComponent 의메소드 5 JComponent 스윙컴포넌트는모두상속받는슈퍼클래스, 추상클래스스윙컴포넌트들이상속받는공통메소드와상수구현 JComponent의주요메소드사례

예제 10-1 : 스윙컴포넌트의공통기능, JComponent 의메소드 6 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JComponentEx extends JFrame { JComponentEx() { super("jcomponent 의공통메소드예제 "); Container c = getcontentpane(); c.setlayout(new FlowLayout()); JButton b1 = new JButton("Magenta/Yellow Button"); JButton b2 = new JButton(" Disabled Button "); JButton b3 = new JButton("getX(), gety()"); b1.setbackground(color.yellow); b1.setforeground(color.magenta); b1.setfont(new Font("Arial", Font.ITALIC, 20)); b2.setenabled(false); b3.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { JButton b = (JButton)e.getSource(); settitle(b.getx() + "," + b.gety()); ); c.add(b1); c.add(b2); c.add(b3); setsize(260,200); setvisible(true); public static void main(string[] args) { new JComponentEx(); 초기상태 getx(), gety() 버튼이클릭된상태 "Arial" 로 20 픽셀크기의폰트 비활성버튼 클릭하면타이틀바에버튼의좌표출력

JLabel 로문자열과이미지출력 7 JLabel 의용도 문자열이나이미지를화면에출력하기위한목적 레이블생성

레이블생성예 8 문자열레이블생성 JLabel textlabel = new JLabel(" 사랑합니다 "); 이미지레이블생성 이미지파일로부터이미지를읽기위해 ImageIcon 클래스사용다룰수있는이미지 : png, gif, jpg sunset.jpg 의경로명이 "images/sunset.jpg" 인경우 ImageIcon image = new ImageIcon("images/sunset.jpg"); JLabel imagelabel = new JLabel(image); 수평정렬값을가진레이블컴포넌트생성 수평정렬로, 문자열과이미지를모두가진레이블 ImageIcon image = new ImageIcon("images/sunset.jpg"); JLabel label = new JLabel(" 사랑합니다 ", image, SwingConstants.CENTER);

예제 10-2 : JLabel 을이용한레이블만들기 9 import javax.swing.*; import java.awt.*; 문자열레이블 public class LabelEx extends JFrame { LabelEx() { settitle(" 레이블예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); JLabel textlabel = new JLabel(" 제임스고슬링입니더!"); ImageIcon img = new ImageIcon("images/gosling.jpg"); JLabel imagelabel = new JLabel(img); 이미지레이블 ImageIcon icon = new ImageIcon("images/icon.gif"); JLabel label = new JLabel(" 커피한잔하실래예, 전화주이소 ", icon, SwingConstants.CENTER); c.add(textlabel); c.add(imagelabel); c.add(label); setsize(300,500); setvisible(true); public static void main(string [] args) { new LabelEx(); 이미지와텍스트가함께있는레이블

JButton 으로버튼만들기 10 JButton 의용도 버튼모양의컴포넌트. 사용자로부터명령을입력받기위한목적버튼은클릭될때 Action 이벤트발생 버튼이미지 버튼문자열 버튼생성 "hello" 문자열을가진버튼생성예 JButton btn = new JButton("hello");

이미지버튼만들기 11 하나의버튼에 3 개의이미지등록 마우스조작에따라 3 개의이미지중적절한이미지자동출력 3 개의버튼이미지 normalicon 버튼의보통상태 ( 디폴트 ) 때출력되는이미지 생성자에이미지아이콘전달혹은 JButton의 seticon(normalicon); rollovericon 버튼에마우스가올라갈때출력되는이미지 이미지설정메소드 : JButton의 setrollovericon(rollovericon); pressedicon 버튼을누른상태때출력되는이미지 이미지설정메소드 : JButton의 setpressedicon(pressedicon)

이미지버튼에이미지설정 12 이미지로딩 필요한이미지로딩 : new ImageIcon( 이미지경로명 ); 사례 ) ImageIcon normalicon = new ImageIcon("images/normalIcon.gif"); ImageIcon rollovericon = new ImageIcon("images/rolloverIcon.gif"); ImageIcon pressedicon = new ImageIcon("images/pressedIcon.gif"); 버튼에이미지등록 JButton 의메소드를호출하여이미지등록 사례 ) JButton button = new JButton(" 테스트버튼 ", normalicon); // normalicon 달기 button.setrollovericon(rollovericon); // rollovericon 달기 button.setpressedicon(pressedicon); // pressedicon 달기 실행중에 normal 이미지 ( 디폴트이미지 ) 교체사례 ImageIcon newicon = new ImageIcon("images/newIcon.gif"); button.seticon(newicon); // 디폴트이미지변경

예제 10-3 : JButton 을이용한이미지버튼만들기 13 그림과같이작동하는이미지버튼을작성하라. import javax.swing.*; import java.awt.*; 보통상태에있는동안 (normalicon.gif) public class ButtonImageEx extends JFrame { ButtonImageEx() { settitle(" 이미지버튼예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); ImageIcon normalicon = new ImageIcon("images/normalIcon.gif"); ImageIcon rollovericon = new ImageIcon("images/rolloverIcon.gif"); ImageIcon pressedicon = new ImageIcon("images/pressedIcon.gif"); 마우스가버튼위에올라간경우 (rollovericon.gif) 마우스가눌러진순간 (pressedicon.gif) JButton btn = new JButton("call~~", normalicon); btn.setpressedicon(pressedicon); // pressedicon 용이미지등록 btn.setrollovericon(rollovericon); // rollovericon 용이미지등록 c.add(btn); setsize(250,150); setvisible(true); public static void main(string [] args) { new ButtonImageEx();

JCheckBox 로체크박스만들기 14 JCheckBox 의용도 선택 (selected) 과비선택 (deselected) 두상태만가지는버튼 체크박스생성 체크박스문자열 체크박스이미지 문자열을가진체크박스생성예 JCheckBox apple = new JCheckBox(" 사과 "); // " 사과 " 체크박스생성 JCheckBox pear = new JCheckBox(" 배 ", true); // 선택상태의 " 배 " 체크박스생성

예제 10-4 : JCheckBox 로체크박스만들기 15 그림과같은 3 개의문자열체크박스를가진프로그램을작성하라. import javax.swing.*; import java.awt.*; 초기상태 public class CheckBoxEx extends JFrame { CheckBoxEx() { settitle(" 체크박스만들기예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); // 3 개의체크박스를생성한다. JCheckBox apple = new JCheckBox(" 사과 "); JCheckBox pear = new JCheckBox(" 배 ", true); JCheckBox cherry = new JCheckBox(" 체리 "); c.add(apple); c.add(pear); c.add(cherry); 선택상태의체크박스생성 체리체크박스를선택한상태 setsize(250,150); setvisible(true); public static void main(string [] args) { new CheckBoxEx();

체크박스에 Item 이벤트처리 16 Item 이벤트 체크박스의선택상태에변화가생길때발생하는이벤트 사용자가마우스나키보드로체크박스를선택 / 해제할때 프로그램에서체크박스를선택 / 해제하여체크상태에변화가생길때 JCheckBox c = new JCheckBox(" 사과 "); c.setselected(true); // 선택상태로변경 이벤트가발생하면 ItemEvent 객체생성 ItemListener 리스너를이용하여이벤트처리 ItemListener 리스너의추상메소드 ItemEvent 의주요메소드

예제 10-5 : ItemEvent 를활용하여체크박스로가격합산응용 17 그림과같이사과, 배, 체리체크박스를만들고, 사용자가과일을선택하면선택된과일의가격을합산하여출력하는프로그램을작성하라. 3 개의체크박스 계산합을출력하는레이블

예제 10-5 정답 18 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class CheckBoxItemEventEx extends JFrame { JCheckBox [] fruits = new JCheckBox [3]; String [] names = {" 사과 ", " 배 ", " 체리 "; JLabel sumlabel; CheckBoxItemEventEx() { settitle(" 체크박스와 ItemEvent 예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); c.add(new JLabel(" 사과 100 원, 배 500 원, 체리 20000 원 ")); MyItemListener listener = new MyItemListener(); for(int i=0; i<fruits.length; i++) { fruits[i] = new JCheckBox(names[i]); fruits[i].setborderpainted(true); c.add(fruits[i]); fruits[i].additemlistener(listener); sumlabel = new JLabel(" 현재 0 원입니다."); c.add(sumlabel); setsize(250,200); setvisible(true); // Item 리스너구현 class MyItemListener implements ItemListener { int sum = 0; // 가격의합 public void itemstatechanged(itemevent e) { if(e.getstatechange() == ItemEvent.SELECTED) { if(e.getitem() == fruits[0]) sum += 100; else if(e.getitem() == fruits[1]) sum += 500; else sum += 20000; else { if(e.getitem() == fruits[0]) sum -= 100; else if(e.getitem() == fruits[1]) sum -= 500; else sum -= 20000; sumlabel.settext(" 현재 " + sum + " 원입니다."); public static void main(string [] args) { new CheckBoxItemEventEx();

JRadioButton 으로라디오버튼만들기 19 JRadioButton 의용도 버튼그룹을형성하고, 그룹에속한버튼중하나만선택되는라디오버튼체크박스와의차이점 체크박스는각각선택 / 해제가가능하지만, 라디오버튼은그룹에속한버튼중하나만선택 라디오버튼생성 버튼그룹에속한라디오버튼들

라디오버튼생성및 Item 이벤트처리 20 버튼그룹과라디오버튼생성과정 1. 버튼그룹객체생성 2. 라디오버튼생성 3. 라디오버튼을버튼그룹에삽입 4. 라디오버튼을컨테이너에삽입 ButtonGroup group = new ButtonGroup(); JRadioButton apple= new JRadioButton(" 사과 "); JRadioButton pear= new JRadioButton(" 배 "); JRadioButton cherry= new JRadioButton(" 체리 "); group.add(apple); group.add(pear); group.add(cherry); container.add(apple); container.add(pear); container.add(cherry); 라디오버튼에 Item 이벤트처리 : ItemListener 리스너이용 라디오버튼이선택 / 해제되어상태가달라지면, Item 이벤트발생 사용자가마우스나키보드로선택상태를변경할때 프로그램에서 JRadioButton의 setselected() 를호출하여선택상태를변경할때

예제 10-6 : JRadioButton 으로라디오버튼만들기 21 그림과같이 3 개의라디오버튼을가진프로그램을작성하라. 버튼그룹 g 에속한라디오버튼들 import javax.swing.*; import java.awt.*; public class RadioButtonEx extends JFrame { RadioButtonEx() { settitle(" 라디오버튼만들기예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); ButtonGroup g = new ButtonGroup(); // 버튼그룹객체생성 JRadioButton apple = new JRadioButton(" 사과 "); JRadioButton pear = new JRadioButton(" 배 ", true); JRadioButton cherry = new JRadioButton(" 체리 "); // 버튼그룹에 3 개의라디오버튼삽입 g.add(apple); g.add(pear); g.add(cherry); // 컨텐트팬에 3개의라디오버튼삽입 c.add(apple); c.add(pear); c.add(cherry); setsize(250,150); setvisible(true); public static void main(string [] args) { new RadioButtonEx();

JTextField 로한줄입력창만들기 22 JTextField 한줄의문자열을입력받는창 ( 텍스트필드 ) 텍스트입력도중 <Enter> 키가입력되면 Action 이벤트발생 입력가능한문자개수와입력창의크기는서로다름 텍스트필드생성 컴퓨터공학과 로초깃값을가지는텍스트필드생성예 JTextField tf2 = new JTextField(" 컴퓨터공학과 ");

예제 10-7 : JTextField 로텍스트필드만들기 23 JTextField 를이용하여그림과같이이름, 학과, 주소를입력받는폼을만들어라. 입력창의열의개수는모두 20 으로한다. import javax.swing.*; import java.awt.*; 초기화면 public class TextFieldEx extends JFrame { TextFieldEx() { settitle(" 텍스트필드만들기예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); c.add(new JLabel(" 이름 ")); c.add(new JTextField(20)); c.add(new JLabel(" 학과 ")); c.add(new JTextField(" 컴퓨터공학과 ", 20)); c.add(new JLabel(" 주소 ")); c.add(new JTextField(" 서울시...", 20)); 사용자가입력한경우 setsize(300,150); setvisible(true); public static void main(string [] args) { new TextFieldEx();

TextArea 로여러줄의입력창만들기 24 JTextArea 여러줄의문자열을입력받을수있는창 ( 텍스트영역 ) 스크롤바를지원하지않는다. JScrollPane 객체에삽입하여스크롤바지원받음 생성자

텍스트영역생성예 25 "hello" 문자열의초깃값을가지고한줄에 20 개의문자가입력가능하며, 7 줄로구성된텍스트영역만들기 왼쪽에만든텍스트영역에스크롤바붙이기 7 줄 사용자가텍스트영역에텍스트를입력하면, 스크롤바나타남 20 문자 JTextArea ta = new JTextArea("hello", 7, 20); container.add(ta); JTextArea ta = new JTextArea("hello", 7, 20); container.add(new JScrollPane(ta));

예제 10-8 : JTextArea 로여러줄이입력되는창만들기 26 그림과같이텍스트필드에문자열을입력한후 <Enter> 키를입력하면텍스트영역창에문자열을추가하고텍스트필드입력창은지우는프로그램을작성하라. <Enter> 키를입력하면 Action 이벤트발생 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TextAreaEx extends JFrame { JTextField tf = new JTextField(20); JTextArea ta = new JTextArea(7, 20); TextAreaEx() { settitle(" 텍스트영역만들기예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); c.add(new JLabel(" 입력후 <Enter> 키를입력하세요 ")); c.add(tf); c.add(new JScrollPane(ta)); 초기화면 텍스트필드에입력하고 <Enter> 키를누른경우 tf.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { JTextField t = (JTextField)e.getSource(); ta.append(t.gettext() + "\n"); t.settext(""); ); setsize(300,300); setvisible(true); public static void main(string [] args) { new TextAreaEx();

JList 로리스트만들기 27 JList 하나이상의아이템을보여주고아이템을선택하도록하는리스트 JScrollPane에 JList 컴포넌트를삽입하여야스크롤가능 리스트생성 예 ) 9 개의과일이름문자열이든리스트만들기 String [] fruits= {"apple", "banana", "kiwi", "mango", "pear", "peach", "berry", "strawberry", "blackberry"; JList strlist = new JList(fruits);

28 예제 10-9 : JList 로다양한리스트만들기 그림과같은 3 개의리스트를가진프로그램을작성하라. import javax.swing.*; import java.awt.*; public class ListEx extends JFrame { String [] fruits= {"apple", "banana", "kiwi", "mango", "pear", "peach", "berry", "strawberry", "blackberry"; ImageIcon [] images = { new ImageIcon("images/icon1.png"), new ImageIcon("images/icon2.png"), new ImageIcon("images/icon3.png"), new ImageIcon("images/icon4.png") ; ListEx() { settitle(" 리스트만들기예제 "); setdefaultcloseoperation(jframe.exit_on_close); Container c = getcontentpane(); c.setlayout(new FlowLayout()); JList strlist = new JList(fruits); c.add(strlist); JList imagelist = new JList(); imagelist.setlistdata(images); c.add(imagelist); 문자열리스트 스크롤바를가지는리스트 JList scrolllist = new JList(fruits); c.add(new JScrollPane(scrollList)); 이미지리스트 setsize(300,300); setvisible(true); public static void main(string [] args) { new ListEx();

JComboBox 로콤보박스만들기 29 JComboBox 텍스트필드와버튼, 그리고드롭다운리스트로구성되는콤보박스드롭다운리스트에서선택한것이텍스트필드에나타남 콤보박스생성 예 ) 텍스트를아이템으로가진콤보박스생성 텍스트필드 버튼 String [] fruits = {"apple", "banana", "kiwi", "mango", "pear", "peach", "berry", "strawberry", "blackberry" ; JComboBox combo = new JComboBox(fruits); 드롭다운리스트

예제 10-10 : JComboBox 로콤보박스만들고활용하기 30 그림과같이 "apple", "babana", "mango" 의과일이름을가진콤보박스를만들고사용자가선택한과일의이미지를콤보박스옆에출력하는프로그램을작성하라. import javax.swing.*; import java.awt.event.*; import java.awt.*; public class ComboActionEx extends JFrame { String [] fruits = {"apple", "banana", "mango"; ImageIcon [] images = { new ImageIcon("images/apple.jpg"), new ImageIcon("images/banana.jpg"), new ImageIcon("images/mango.jpg") ; JLabel imglabel = new JLabel(images[0]); JComboBox JLabel ComboActionEx() { settitle(" 콤보박스활용예제 "); Container c = getcontentpane(); c.setlayout(new FlowLayout()); JComboBox combo = new JComboBox(fruits); c.add(combo); c.add(imglabel); // 콤보박스에 Action 리스너등록. 선택된아이템의이미지출력 combo.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { JComboBox cb = (JComboBox)e.getSource(); int index = cb.getselectedindex(); imglabel.seticon(images[index]); ); setsize(300,250); setvisible(true); public static void main(string [] args) { new ComboActionEx();

메뉴구성 31 메뉴만들기에필요한스윙컴포넌트 메뉴아이템 JMenuItem 메뉴 JMenu 여러개의메뉴아이템을가짐메뉴바 JMenuBar 여러개의메뉴를붙이는바이며, 프레임에부착됨분리선 메뉴아이템사이의분리선으로 separator라고부름 JMenu의 addseparator() 를호출하여삽입함 메뉴 (JMenu) 메뉴아이템 (JMenuItem) 메누바 (JMenuBar) 분리선

메뉴만드는과정 32 JMenuBar 컴포넌트 JMenuBar 컴포넌트 JMenuBar 컴포넌트 JMenuBar 컴포넌트 add add JMenuItem 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 (1) JMenuBar 컴포넌트생성 (2) JMenu 컴포넌트를생성하여 JMenuBar 에붙인다. (3) JMenuItem 컴포넌트를생성하여 JMenu 에붙인다. (3 ) 여러개의메뉴와메뉴아이템을생성한다. 타이틀바 (4) JMenuBar 컴포넌트를 JFrame 에붙인다. (1) (2) (3) (4) JMenuBar mb = new JMenuBar(); JMenu screenmenu = new JMenu("Screen"); mb.add(screenmenu); screenmenu.add(new JMenuItem("Load")); screenmenu.add(new JMenuItem("Hide")); screenmenu.add(new JMenuItem("ReShow")); screenmenu.addseparator(); screenmenu.add(new JMenuItem("Exit")); frame.setjmenubar(mb);

예제 10-11 : 메뉴만들기 그림과같이 Screen, Edit, Source, Project, Run 의 5 개메뉴를가지며, Screen 메뉴에만 4 개의메뉴아이템과분리선 (separator) 을가지도록프로그램을작성하라. import javax.swing.*; public class MenuEx extends JFrame { MenuEx() { settitle("menu 만들기예제 "); createmenu(); // 메뉴생성, 프레임에삽입 setsize(250,200); setvisible(true); void createmenu() { JMenuBar mb = new JMenuBar(); JMenu screenmenu = new JMenu("Screen"); screenmenu.add(new JMenuItem("Load")); screenmenu.add(new JMenuItem("Hide")); screenmenu.add(new JMenuItem("ReShow")); screenmenu.addseparator(); screenmenu.add(new JMenuItem("Exit")); mb.add(screenmenu); mb.add(new JMenu("Edit")); mb.add(new JMenu("Source")); mb.add(new JMenu("Project")); mb.add(new JMenu("Run")); setjmenubar(mb); public static void main(string [] args) { new MenuEx(); 메뉴바를프레임에붙임. 비로소메뉴가보인다. 33

메뉴아이템에 Action 이벤트달기 34 메뉴아이템을클릭하면 Action 발생 메뉴아이템은사용자로부터의지시나명령을받는데사용 ActionListener 인터페이스로리스너작성각메뉴아이템마다이벤트리스너설정 예 ) Load 메뉴아이템에 Action 리스너를작성하는경우 JMenuItem item = new JMenuItem("Load"); item.addactionlistener(new MenuActionListener()); // 메뉴아이템에 Action 리스너설정 screenmenu.add(item); class MenuActionListener implements ActionListener { public void actionperformed(actionevent e) { // 사용자가 Load 메뉴아이템을선택하는경우처리할작업구현...

예제 10-12 : 메뉴에 Action 리스너활용 35 그림과같이 Screen 메뉴에 4 개의메뉴아이템을만들고, Load 메뉴아이템을선택하면이미지를하나로딩하여출력하고, Hide 메뉴아이템을선택하면이미지를보이지않게하며, ReShow 메뉴아이템을선택하면숨겨진이미지를다시보이게하고, Exit 메뉴아이템을선택하면프로그램을종료하도록 Action 리스너를작성하라. 초기상태 Load 메뉴아이템선택하면레이블에이미지출력 Hide 메뉴아이템선택으로이미지를보이지않게함 ReShow 메뉴아이템선택으로숨겨진이미지가다시보이게함 Exit 메뉴아이템선택하면프로그램종료

예제 10-12 정답 36 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class MenuActionEventEx extends JFrame { JLabel imglabel = new JLabel(); // 빈레이블 MenuActionEventEx() { settitle("menu 에 Action 리스너만들기예제 "); createmenu(); getcontentpane().add(imglabel, BorderLayout.CENTER); setsize(250,200); setvisible(true); void createmenu() { JMenuBar mb = new JMenuBar(); // 메뉴바생성 JMenuItem [] menuitem = new JMenuItem [4]; String[] itemtitle = {"Load", "Hide", "ReShow", "Exit"; JMenu screenmenu = new JMenu("Screen"); class MenuActionListener implements ActionListener { public void actionperformed(actionevent e) { String cmd = e.getactioncommand(); switch(cmd) { // 메뉴아이템의종류구분 case "Load" : if(imglabel.geticon()!= null) return; // 이미로딩되었으면리턴 imglabel.seticon(new ImageIcon("images/img.jpg")); break; case "Hide" : imglabel.setvisible(false); break; case "ReShow" : imglabel.setvisible(true); break; case "Exit" : System.exit(0); break; MenuActionListener listener = new MenuActionListener(); for(int i=0; i<menuitem.length; i++) { menuitem[i] = new JMenuItem(itemTitle[i]); menuitem[i].addactionlistener(listener); screenmenu.add(menuitem[i]); mb.add(screenmenu); setjmenubar(mb); // 메뉴바를프레임에부착 public static void main(string [] args) { new MenuActionEventEx();

팝업다이얼로그, JOptionPane 37 팝업다이얼로그 사용자에게메시지를전달하거나문자열을간단히입력받는용도 JOptionPane 클래스를이용하여생성 static 타입의간단한메소드이용 입력다이얼로그 - JOptionPane.showInputDialog() 한줄을입력받는다이얼로그 String name = JOptionPane.showInputDialog(" 이름을입력하세요."); // name 에 "Java Kim" 이리턴 // 취소버튼이나, 입력없이다이얼로그가닫히면 null 리턴

확인다이얼로그 38 확인다이얼로그 - JOptionPane.showConfirmDialog() 사용자로부터 Yes/No 응답을입력받는다이얼로그 int result = JOptionPane.showConfirmDialog(null, " 계속할것입니까?", "Confirm", JOptionPane.YES_NO_OPTION); if(result == JOptionPane.CLOSED_OPTION) { // 사용자가 " 예 ", " 아니오 " 의선택없이다이얼로그창을닫은경우 else if(result == JOptionPane.YES_OPTION) { // 사용자가 " 예 " 를선택한경우 else { // 사용자가 " 아니오 " 를선택한경우

메시지다이얼로그 39 메시지다이얼로그 showmessagedialog 단순메시지를출력하는다이얼로그 JOptionPane.showMessageDialog(null, " 조심하세요 ", "Message", JOptionPane.ERROR_MESSAGE);

예제 10-13 : JOptionPane 으로 3 가지팝업다이얼로그만들기 초기화면 다음그림과같이 3 개의팝업다이얼로그를출력하는응용프로그램을작성해보라 Input Name 버튼을누르면입력다이얼로그생성. "Java Kim" 을입력하고확인버튼을누르면텍스트필드창에출력 Confirm 버튼을누르면확인다이얼로그생성 " 예 " 버튼을누르면텍스트필드창에 "Yes" 출력 40 Message 버튼을누르면메시지다이얼로그생성 " 확인 " 버튼을누르면다이얼로그종료

예제 10-13 정답 inputbtn.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { import javax.swing.*; import java.awt.event.*; import java.awt.*; public class OptionPaneEx extends JFrame { Container contentpane; OptionPaneEx() { settitle(" 옵션팬예제 "); setdefaultcloseoperation(jframe.exit_on_close); contentpane = getcontentpane(); setsize(500,200); contentpane.add(new MyPanel(), BorderLayout.NORTH); setvisible(true); class MyPanel extends Panel { JButton inputbtn = new JButton("Input Name"); JTextField tf = new JTextField(10); JButton confirmbtn = new JButton("Confirm"); JButton messagebtn = new JButton("Message"); MyPanel() { setbackground(color.light_gray); add(inputbtn); add(confirmbtn); add(messagebtn); add(tf); ); String name = JOptionPane.showInputDialog(" 이름을입력하세요."); if(name!= null) tf.settext(name); confirmbtn.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { int result = JOptionPane.showConfirmDialog(null, " 계속할것입니까?", "Confirm", JOptionPane.YES_NO_OPTION); if(result == JOptionPane.CLOSED_OPTION) tf.settext("just Closed without Selection"); else if(result == JOptionPane.YES_OPTION) tf.settext("yes"); else tf.settext("no"); ); messagebtn.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { JOptionPane.showMessageDialog(null, " 조심하세요 ", "Message", JOptionPane.ERROR_MESSAGE); ); 41 public static void main(string [] args) { new OptionPaneEx();