강의자료

Similar documents
9장.key

11장.key

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 04-UDP Programming.ppt

Java Programing Environment

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

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

No Slide Title

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

10장.key

PowerPoint Presentation

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

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

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

Microsoft PowerPoint - 14주차 강의자료

슬라이드 1

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

05-class.key

Microsoft PowerPoint - Java-03.pptx

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

No Slide Title

09-interface.key

슬라이드 1

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

오버라이딩 (Overriding)

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JMF3_심빈구.PDF

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

rmi_박준용_final.PDF

슬라이드 1

01-OOPConcepts(2).PDF

비긴쿡-자바 00앞부속

02 C h a p t e r Java

Chap12

1

5장.key

PowerPoint 프레젠테이션

MVVM 패턴의 이해

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

Interstage5 SOAP서비스 설정 가이드

PowerPoint 프레젠테이션

Design Issues

11-GUI.key

PowerPoint 프레젠테이션

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

ch09

Cluster management software

PowerPoint Presentation

PowerPoint Presentation

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

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

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - 06-Chapter09-Event.ppt

MasoJava4_Dongbin.PDF

Intro to Servlet, EJB, JSP, WS

C# Programming Guide - Types

12-file.key

Microsoft PowerPoint - Java7.pptx

DocsPin_Korean.pages

제11장 프로세스와 쓰레드

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

8장.그래픽 프로그래밍

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

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

자바 프로그래밍

PowerPoint Presentation

Cluster management software

Something that can be seen, touched or otherwise sensed

초보자를 위한 자바 2 21일 완성 - 최신개정판

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

PowerPoint Template

Spring Boot

JMF2_심빈구.PDF

DE1-SoC Board

Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전

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

운동시뮬레이션 강의 소개

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

thesis

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

untitled

Solaris Express Developer Edition

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

PowerPoint 프레젠테이션

Orcad Capture 9.x

PowerPoint 프레젠테이션

PowerPoint Presentation

Index Process Specification Data Dictionary

Dialog Box 실행파일을 Web에 포함시키는 방법

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

PowerPoint Presentation

예제 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

PowerPoint Presentation

13ÀåÃß°¡ºÐ

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

어댑터뷰

Transcription:

Copyright, 2014 MMLab, Dept. of ECE, UOS Java Swing 2014 년 3 월 최성종서울시립대학교전자전기컴퓨터공학부 chois@uos.ac.kr http://www.mmlab.net

차례 2014년 3월 Java Swing 2

2017-06-02 Seong Jong Choi Java Basic Concepts-3

Graphical Components Windows Buttons Menus Text fields 2014년 3월 Java Swing 4

Event-driven Programming GUI Program: MVC Graphical Components (GUI) : View Listener methods: Controller Application methods: Model General Sequence: 1. User interacts with GUI components 2. The component creates an event 3. An event listener will be executed 2014년 3월 Java Swing 5

Class Hierarchies 점선 : Abstract Class Container: Can contain other GUI components Frame Window 테두리, 실제창은 Content Pane 으로정의 2014년 3월 Java Swing 6

Container Class Container Class 의특징 다른컴포넌트를포함할수있다. 다른컨테이너에포함될수있다. 화면에출력이가능하다. Event를발생할수있다. Event Listener를등록할수있다. 모든 Swing 클라스는 Container를상속하기때문에, 위의특징을가진다. 2014년 3월 Java Swing 7

Swing Class Hierarchies: JComponent 2014년 3월 Java Swing 8

Notes 실제화면에표출되는모양은 Software Object 의 Representation 이다. Model <-> View 모든 Swing class 는 J 로시작한다. 예, Jframe, JButton 2014년 3월 Java Swing 9

2017-06-02 Seong Jong Choi Java Basic Concepts-10

JFrame Frame Window 테두리, 실제창은 Pane 으로정의 프레임은컨테이터클라스이다. 다른컴포넌트를포함할수있다 2014년 3월 Java Swing 11

First Program import java.awt.*; // 1. import the application windowing toolkit import javax.swing.*; // 2. import the Swing classes. Note the "x" in javax. public class TestFrame1 // usual main() method public static void main ( String[] args ) JFrame frame // 4. a reference to the object = new JFrame("Test Frame 1"); // 3. construct a JFrame object frame.setsize(200,100); // 5. set it to 200 pixels wide by 100 high frame.setvisible( true ); // 6. ask it to become visible on the screen frame.setdefaultcloseoperation ( JFrame.EXIT_ON_CLOSE ); // 7. say what the close button does 2014년 3월 Java Swing 12

Creating a JFame Object: Direct Instantiation 2014년 3월 Java Swing 13

Creating a JFrame Object: JFrame 으로부터상속 1/2 class MyFrame extends JFrame JPanel panel; JLabel label; // constructor MyFrame( String title ) super( title ); // invoke the JFrame constructor setsize( 150, 100 ); setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); setlayout( new FlowLayout() ); // set the layout manager label = new JLabel("Hello Swing!"); // construct a JLabel add( label ); // add the label to the JFrame public class TestFrame2 public static void main ( String[] args ) MyFrame frame = new MyFrame("Hello"); // construct a MyFrame object frame.setvisible( true ); // ask it to become visible 2014년 3월 Java Swing 14

Creating a JFrame Object: JFrame 으로부터상속 2/2 2014년 3월 Java Swing 15

2017-06-02 Seong Jong Choi Java Basic Concepts-16

JButton: 2014년 3월 Java Swing 17

A Frame with a Button class ButtonFrame extends JFrame JButton bchange ; // reference to the button object // constructor for ButtonFrame ButtonFrame(String title) super( title ); // invoke the JFrame constructor setlayout( new FlowLayout() ); // set the layout manager bchange = new JButton("Click Me!"); // construct a JButton add( bchange ); // add the button to the JFrame setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); public class ButtonDemo public static void main ( String[] args ) ButtonFrame frm = new ButtonFrame("Button Demo"); frm.setsize( 150, 75 ); frm.setvisible( true ); 2014년 3월 Java Swing 18

Layout Manager 컨테이너에컴포넌트를 add() 할때위치와크기를 정한다. FlowLayout setlayout( new FlowLayout() ); // set the layout manager 2014년 3월 Java Swing 19

Event 처리 1. Event Listener 정의 2. 정의된 Listener 등록 Click -> Event Objet -> Event Listener 2014년 3월 Java Swing 20

1. Event Listener 정의 : ActionListener Interface import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonFrame2 extends JFrame implements ActionListener JButton bchange; ButtonFrame2()...... 1 // listener method for the ActionListener interface public void actionperformed( ActionEvent evt)...... 2014년 3월 Java Swing 21

2. Event Listener 등록 : addactionlistener() 메소드 class ButtonFrame2 extends JFrame implements ActionListener JButton bchange ; // constructor public ButtonFrame2() bchange = new JButton("Click Me!"); setlayout( new FlowLayout() ); // register the ButtonFrame object as the listener for the JButton. // 즉, 버튼의 Listener(actionPerformed) 는이클라스에구현되어있다. bchange.addactionlistener( this ); add( bchange ); setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); // listener method required by the interface public void actionperformed( ActionEvent evt)...... 2014년 3월 Java Swing 22

Complete Program 1/2 import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonFrame2 extends JFrame implements ActionListener JButton bchange ; // reference to the button object // constructor for ButtonFrame2 ButtonFrame2(String title) super( title ); // invoke the JFrame constructor setlayout( new FlowLayout() ); // set the layout manager // construct a Button bchange = new JButton("Click Me!"); // register the ButtonFrame2 object as the listener for the JButton. bchange.addactionlistener( this ); 2014년 3월 Java Swing 23

Complete Program 2/2 add( bchange ); // add the button to the JFrame setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); public void actionperformed( ActionEvent evt) getcontentpane().setbackground( Color.blue ); repaint(); // ask the system to paint the screen. // Change the Frame's background public class ButtonDemo2 public static void main ( String[] args ) ButtonFrame2 frm = new ButtonFrame2("Button Demo Two"); frm.setsize( 200, 100 ); frm.setvisible( true ); 2014년 3월 Java Swing 24

Event Listener 의역할 : Controller public void actionperformed( ActionEvent evt) //1. Check user input: look at the information in the ActionEvent // 2. Interact with model (Property Update): invoke one of several methods depending on the information // 3. Interact with view (Component Update): send the results of that method to another GUI component 2 3 1 2014년 3월 Java Swing 25

The Diagram Refer to Refer to Controller View 2014년 3월 Java Swing 26

2017-06-02 Seong Jong Choi Java Basic Concepts-27

2014년 3월 Java Swing 28

두개의버튼 하나의 Event listener 가두버튼의 click event 를처리 2014년 3월 Java Swing 29

두개의버튼이하나의 Event Listener 에의해처리됨 public class TwoButtons extends JFrame implements ActionListener JButton redbutton ; JButton grnbutton ; // constructor for TwoButtons public TwoButtons(String title) redbutton = new JButton("Red"); grnbutton = new JButton("Green"); redbutton.setactioncommand( "red" ); // set the command grnbutton.setactioncommand( "green" ); // set the command // register the buttondemo frame as the listener for both Buttons. redbutton.addactionlistener( this ); grnbutton.addactionlistener( this ); public void actionperformed( ActionEvent evt) // check which command has been sent if ( evt.getactioncommand().equals( "red" ) ) getcontentpane().setbackground( Color.red ); repaint(); 2014년 3월 Java Swing 30

2017-06-02 Seong Jong Choi Java Basic Concepts-31

JTextField 텍스트한줄을넣을수있다. Keyboard focus //15자의필드생성 JTextField text = new JTextField( 15 ); 2014년 3월 Java Swing 32

JTextField 의 Event Listener 텍스트를치고 enter를치면 ActionEvent가발생한다. (JButton과동일 ) JTextField의텍스트를받으려면->String gettext() JTextField에텍스트를넣으려면 ->settext(string x) 2014년 3월 Java Swing 33

Application Code: Model 의분리 public void actionperformed( ActionEvent evt) String name = intext.gettext();//access Data outtext.settext( name ); repaint(); // The Separate application code. void copytext() String name = intext.gettext(); outtext.settext( name ); public void actionperformed( ActionEvent evt) copytext(); repaint(); 40% GUI code vs 60% Application code 2014년 3월 Java Swing 34

2017-06-02 Seong Jong Choi Java Basic Concepts-35

setrisizable() JFrame 의 method setresizable (true) : Default, setresizable(false): 윈도우의크기를조절할수없다. 2014년 3월 Java Swing 36

JPanel Container: groups GUI components 직사각형으로표현 테두리는없다 패널에패널을넣을수있다. 각패널마다 Layout Manager를가진다 Default: flow layout 프레임은각패널을하나의 component 로처리한다. 2014년 3월 Java Swing 37

JFrame 을 BoxLayout 으로설정하는방법 BoxLayout(Container contain, int axis) contain: the container this layout manager is for axis: BoxLayout.X_AXIS ---- for left to right alignment BoxLayout.Y_AXIS ---- for top to bottom alignment 프레임의 content pane을알아야한다. Example setlayout( new BoxLayout( getcontentpane(), BoxLayout.Y_AXIS ); add( datapanel ); add( butpanel ); 2014년 3월 Java Swing 38

2017-06-02 Seong Jong Choi Java Basic Concepts-39

JRadioButton 여러개중하나만선택 : 라디오방송국중하나만선택 ButtonGroup 이여러 JRadioButton 을포함 ButtonGroup 의여러라디오버튼중하나만선택 생성순서 1. JRadioButton object 생성 2. ButtonGroup object 생성 3. 라디오버튼을버튼그룹에삽입 2014년 3월 Java Swing 40

라디오버튼생성의예 public class IdealWeight extends JFrame public IdealWeight() // 1. JRadioButton object 생성 genderm = new JRadioButton("Male", true ); genderf = new JRadioButton("Female", false ); // 2. ButtonGroup object 생성 gendergroup = new ButtonGroup(); // 3. 라디오버튼을버튼그룹에삽입 gendergroup.add( genderm ); gendergroup.add( genderf );..... // 4. JPanel에각각의라디오버튼삽입. genderpanel = new JPanel(); genderpanel.setlayout( new BoxLayout( genderpanel, BoxLayout.Y_AXIS ) ); genderpanel.add( new JLabel("Your Gender") ); genderpanel.add( genderm ); genderpanel.add( genderf ) 2014년 3월 Java Swing 41

BorderLayout Layout Manager JFrame의 default layout manager 다섯개의 container ( 직사각형 ) 으로구성됨 각 container는하나의 component만가질수있다. 주로 JPanel 임 2014년 3월 Java Swing 42

2017-06-02 Seong Jong Choi Java Basic Concepts-43

JSlider Adjust a value and observe the effect in real time. 움직일때마다 ChangeEvent가발생 ChangeListener가듣는다. 생성자 : JSlider( int orientation, int min, int max, int init ) Tick Spacing setmajortickspacing(int spacing) setminortickspacing(int spacing) Example slide = new JSlider( JSlider.VERTICAL, 0, 100, 79 ); slide.setmajortickspacing( 10); slide.setminortickspacing( 5); slide.setpaintticks ( true); // slide.setpaintlabels( true); slide.setsnaptoticks( true);// value of the slider is an integer multiple of the minor tick spacing slider.setpreferredsize( new Dimension( 50, 300) ); //Slider의크기 2014년 3월 Java Swing 44

ChangeListener Interface: Slider 의이벤트발생 Slider를움직이면 change event가발생 천천히움직이면정수값을지날때에 event발생 Change event listener는자주발생하는 event를처리해야한다. Event Listener 생성 ChangeListener Interface은하나의 method만정의 public void statechanged( ChangeEvent evt ) Event Listener 등록 slider.addchangelistener( ChangeListener lstn ) 2014년 3월 Java Swing 45

여러 Slider 에서발생하는 Event 를하나의 listener 가처리할경우 1. 각 Slider 마다이름을정의한다. Component.setName(String name) 2. Event Listener 에서 event 를발생한 slider 를찾는다. // listener method Public void statechanged( ChangeEvent evt ) Jslider source; source = (Jslider)evt.getSource(); //event가발생한 slider if ( source.getname().equals("slidera") ) // Slider의이름을찾는다. texta.settext( source.getvalue() + " " ); // Slider의값을읽는다. 2014년 3월 Java Swing 46