Event 발생과처리 Event 생성자 Event 처리자 Event listeners Keyboard, Mouse, Button, Menu, Panel,
Motion2DGraph Vector<Double> y Vector<Double> y Vector<Double> x Vector<Vector<Double>> y
MotionGUI Window Frame Menu supply Action process Set Solver
MotionSolver Solve differential equations Vector<Double> x Vector<Vector<Double>> y Vector<Double> y00
6.1 자바의이벤트처리방법 자바에서는이벤트를받기원하는객체에대해서만이벤트를전달하게된다. 즉, 어떤객체에서특정이벤트를받기원한다면그객체에특정이벤트를받기위한리스너 (Listener) 를틍록 자바에서는각이벤트들이하나의클래스로정의 이벤트객체는두개의영역으로나눈다. 저수준 : AWT 컴포넌트에서일어나는이벤트 기보드이벤트를위한 java.awt.event.keyevent 마우스이벤트를위한 java.awt.event.mouseevent 윈도우이벤트를위한 java.awt.event.windowevent 등 고수준 : 사용자의반응을의미론적으로해석 사용자의액션을다루는 java.awt.event.actionevent 객체의값이바뀔때발생하는이벤트를다루는 java.awt.event.adjustmentevent 텍스트객체의값이바뀔때발생하는이벤트를다루는 java.awt.event.textevent 등
6.1.2 이벤트모델과이벤트객체 (1) 저수준이벤트와고수준이벤트에속한객체 저수준 Java.lang.Object Java.util.EventObject Java.awt.AWTEvent Java.awt.eventComponentEvent java.awt.event.focusevent java.awt.event.inputevent java.awt.event.keyevent java.awt.event.mouseevent java.awt.event.containerevent java.awt.event.windowevent 고수준 Java.lang.Object java.util.eventobject java.awt.awtevent java.awt.event.actionevent java.awt.event.adjustmentevent java.awt.event.itemevent java.awt.event.textevent
6.1.2 이벤트모델과이벤트객체 (2) AWT 의각컴포넌트에서발생할수있는이벤트의종류 Action Event Adjustmen tevent Componen tevent Container Event FocusEve nt ItemEv ent KeyEve nt MouseEv ent Button Canvas Checkbox CheckboxMenuItem TextEv ent WindowE vent Choice Component Container Dialog Frame Label List MenuItem Panel Scrollbar ScrollPane TextArea TestComponent TextField Window
6.1.3 이벤트소스와이벤트리스너 이벤트모델의 3 가지요소 : 이벤트소스, 이벤트리스너, 이벤트어댑터 이벤트소스 (Event Source) : 이벤트를발생시킴 AWT 컴포넌트객체를의미 ( 처리하고싶은각이벤트에대한리스너를만들어이벤트소스에등록해야함 ) 이벤트리스너 (Event Listener) : 발생한이벤트를받아처리하는객체 ( 리스너는이벤트를처리하고싶은이벤트소스에등록되어있어야함 ) 리스너는각이벤트를처리하기위해정의된인터페이스를구현함으로써만들수있다. 리스너객체에서는각리스너인터페이스에선언해놓은메소드를구체적으로정의하면됨 리스너인터페이스들의목록 저수준 고수준 java.util.eventlistener java.util.eventlistener java.util. ComponentListener java.util. ContainerListener java.util. FocusListener java.util. KeytListener java.util. MouseListener java.util. MouseMotionListener java.util. WindowListener java.util. ActionListener java.util. AdjustmentListener java.util. ItemListener java.util. TextListener
6.1.4 이벤트어댑터 이벤트어댑터는리스너객체를정의하는프로그래머들이실수하지않고편하게프로그램을만들수있도록도와주는일종의도우미클래스 리스너객체를만들기위해리스너인터페이스에선언되어있는메소드들을모두다구현해야하기때문에코딩중에실수가발생할수있다. 그래서하나라도구현하지않으면에러가발생하게되어이런불편함을없애기위해제공되고있는것이바로이벤트어댑터 (Event Adapter) 객체. 이벤트어댑터는이벤트리스너인터페이스에선언된메소드들을미리구현해놓은클래스 리스너객체를만들때단지이이벤트어댑터클래스를상속받기만하면된다.( 필요한매소드에대해서재정의 ) 저수준의이벤트리스너에대해서만이벤트어댑터가제공 6.2 자바의이벤트객체 6.2.1 AWTEvent (1) AWTEvent 는모든 AWT 이벤트들의최상위클래스 AWTEvent 클래스의생성자 AWTEvent(Object source, int id) AWTEvent(Event event)
6.2.1 AWTEvent (2) AWTEvent 클래스에서제공되는메소드중에서중요한것은발생한이벤트를소멸시키기위해사용하는 consume() 이라는메소드일것이다. Consume() 메소드는이벤트를모두처리한후에원래발생한객체로되돌려주지않고소멸시키게된다. 현이벤트의고유번호 (ID) 를리턴하는 getid() 메소드와이벤트를소멸시켰는지를체크하기위한 IsConsumed() 메소드도제공 AWTEvent 클래스에는새로운컴포넌트를정의할때특정이벤트를허용할것인지또는금지할것인지의여부를지정하기위해사용되는이벤트마스크상수가정의 이벤트를발생하도록허용하기위해사용되는메소드 java.awt.component 클래스의 enableevents() : 금지하기위해사용되는메소드 java.awt.component 클래스의 disableevents() : AWTEvent 에정의된이벤트마스크이벤트마스크 ACTION_EVENT_MASK ADJUSTMENT_EVENT_MASK COMPONENT_EVENT_MASK CONTAINER_EVENT_MASK FOCUS_EVENT_MASK ITEM_EVENT_MASK KEY_EVENT_MASK MOUSE_EVENT_MASK MOUSE_MOTION_EVENT_MASK RESERVED_ID_MAX TEXT_EVENT_MASK WINDOW_EVENT_MASK ActionEvent 를위한이벤트마스크 AdjustmentEvent 를위한이벤트마스크 ComponentEvent 를위한이벤트마스크 ContainerEvent 를위한이벤트마스크 FocusEvent 를위한이벤트마스크 ItemEvent 를위한이벤트마스크 KeyEvent 를위한이벤트마스크 MouseEvent 를위한이벤트마스크 마우스이동이벤트를위한이벤트마스크 내정된 AWT 이벤트 ID 의최대값 TextEvent 를위한이벤트마스크 WindowEvent 를위한이벤트마스크
6.2.2. Action Event(1) ActionEvent 는컴포넌트에서특정동작을할때발생하는액션이벤트를처리하기위한클래스 ( 특정동작이라는것은각컴포넌트별로의미가다르다 ) 액션이벤트를발생할수있는컴포넌트로는 Button, List, MenuItem, TextField 가있음 ( 각컴포넌트들은다음과같은상황에서액션이벤트가발생 ) 컴포넌트 Button List MenuItem TextField 액션이벤트발생상황마우스로버튼을클릭했을때마우스로리스트에있는아이템을더블클릭했을때마우스로메뉴를선택했을때텍스트필드에서 Enter 키를눌렀을때 ActionEvent 객체를만드는데사용되는생성자 ( 임의로이벤트를발생시키기위해 ActionEvent 객체를만들고자할때사용 ) ActionEvent(Object source, int id, String command) ActionEvent(Object source, int id, String command, int modifiers)
6.2.2. Action Event(2) 컴포넌트에서발생하는액션이벤트를처리하기위해서는리스너라는것을만들어야함 리스너는반드시 ActionListener 인터페이스를구현한것 리스너를만든후에는 addactionlistener 메소드를통해액션이벤트를처리할컴포넌트에등록 void actionperformed(actionevnet evt) ActionListener 인터페이스에는위와같은메소드가선언, 리스너객체내에서는이메소드를구체적으로구현 ex) class actionlistener implements ActionListener { public void actionperformed(actionevent e) { // 액션이벤트발생시실행할코드 } } 각컴포넌트에서액션이벤트가발생하면액션커맨드 (Action Command) 라는문자열이자동적으로만들어지됨. 현재발생한액션이벤트의액션커맨드는다음과같은메소드를통해알수있다. String getactioncommand()
6.2.2. Action Event(3) ActionEvent 클래스는액션이벤트가발생했을때현재 Modifier 키의상태를체크하기위한메소드도제공하면리턴되는값에서특정 Modifier 키가눌러졌는지를체크하기위한마스크상수도함께제공 Modifier : Ctrl, Alt, Shift 와같은보조기를의미 int getmodifiers() Modifier 키마스크 마스크상수 ALT_MASK CTRL_MASK META_MASK SHIFT_MASK ALT 키상수 Ctrl 키상수메타키상수 Shift 키상수 Ex) Ctrl 키가눌러졌는지를체크하기위해서는다음과같은코드를만들면된다. public void actionperformed(actionevent evt) { if((evt.getmodifiers() & ActionEvent.CTRL_MASK)!=0) { // ActionEvent 발생시 Ctrl 키눌림 } }
6.2.2. Action Event(4) 액션이벤트는마우스로버튼을클릭했을때발생 액션이벤트는마우스로리스트에있는아이템을더블클릭했을때발생 액션이벤트는마우스로메뉴를선택했을때발생 액션이벤트는텍스트필드에서 Enter키를눌렀을때발생 액션이벤트는리스너 : ActionListener 인터페이스 액션이벤트리스너를등록하는컴포넌트맴버메소드 : addactionlistener() 액션이벤트발생시액션커맨드를이벤트를발생시킨컴포넌트를구분할수있다. 액션이벤트발생시 Modifier키상태알아내기 : getmodifier()
Javax 를이용한 GUI 프로그램 Java event model Java event 처리
Java event model http://java.sun.com/j2se/1.3/docs/ guide/awt/designspec/events.html Low level event Semantic event Event listener Event sources Adapters
Low level event
Semantic event
Event listeners
Low level listeners
Semantic listeners
Low level sources
Semantic sources
Semantic sources
Adapters
Event model
Event model
Event model
Event model
How to make GUI program http://java.sun.com/docs/books/tut orial/uiswing/components/frame.ht ml
Code exmaple
Code example
Code example
할일 GUI 공부하기 Java Tutorial
질문 질문하세요