[java.awt.event] package
awt.event Class
ActionEvent - button , textfield
AdjustmentEvent - scrollbar
FocusEvent - Focus 얻었을때, 잃었을때 Event
ItemEvent - choice, checkbox, list에 add할 때
KeyEvent - 단축기, 키 누를때 마다의 Event
MouseEvevt - MousePointer가 어떤 component에 들어갔을 때(MouseEntered.exited)
- MousePressed, Mousereleased
- Mousemoved, Mousedragged
TextEvent - 어떤 Text에 대한 Event (낱말맞추기)
WindowEvent - 윈도우 창에서의 Event
awt.event Interfaces - Listener(감시자)
[구동순서]
Listener
행동을 취하면 2.event
→EventSource
Component에서 1. 등록부에 Event Source가 될 수 있는 것을 EventListener 등록(감시자) : ~.add~Listener()
→3. Event 발생
→4. Logic(Method) : 반드시 해당 listener의 method override
[만드는 순서]
1. Event Source 결정 (button, checkbox,,,,)
2. Event 결정 (button이면 actionevent,,,,)
3. ~Listener구현 (actionListener) - implements 하고 Override함
4. 1을 Listener에 등록 (등록부에다)
ItemTest
1. Event Source 결정 : 8개
6개 checkbox
1개 choice
1개 button
2. Event 결정
checkbox는 ItemEvent
choice는 ItemEvent
button은 ActionEvent
3. ItemListener,ActionListener 구현 (implements, 추상메소드 Override)
cntl+1번 눌러서 error 보고
Add unimplemented method 하면
추상메소드 Override 됨
4. 1을 Listener에 등록 (등록부에)
5. Override 한 부분에 coding
package com.kitri.awt.event;
import java.awt.*;
import java.awt.event.*;
public class ItemTest extends Frame implements ItemListener,ActionListener{
//선언부
Panel pN = new Panel();
Panel pS = new Panel();
CheckboxGroup cbg = new CheckboxGroup(); //라디오버튼 1개만 선택됨
Checkbox mor = new Checkbox("아침",cbg,true);
Checkbox aft = new Checkbox("점심",cbg,false);
Checkbox eve = new Checkbox("저녁",cbg,false);
Checkbox app = new Checkbox("사과",true); //체크박스 다중선택 가능
Checkbox banana = new Checkbox("바나나",false);
Checkbox straw = new Checkbox("딸기",false);
TextArea ta = new TextArea();
Choice ch = new Choice();
Button exit = new Button("종료");
public ItemTest() {
//배치부
super("아이템 테스트!!!");
pN.setLayout(new GridLayout(2,3,10,10));
pN.add(mor);
pN.add(aft);
pN.add(eve);
pN.add(app);
pN.add(banana);
pN.add(straw);
pS.setLayout(new BorderLayout(10,0));
ch.add("아침");
ch.add("점심");
ch.add("저녁");
pS.add(ch,"Center");
pS.add(exit,"East");
setLayout(new BorderLayout(0,10));
add(pN,"North");
add(ta,"Center");
add(pS,"South");
setBounds(300, 200, 300, 500);
setVisible(true); //여기까지 배치부
//구현부
//exit.addActionListener(new ItemTest());
//()안은 ActionListener의 객체를 넣는 자리
//하지만 ActionListener는 interface여서 객체 못넣음
//대신 implements하고 있는 ItemTest를 넣으면 되는데
//new 하면 계속 새로운것이 생겨서 무한복제
//따라서 this를 써야함.
exit.addActionListener(this);
mor.addItemListener(this);
aft.addItemListener(this);
eve.addItemListener(this);
app.addItemListener(this);
banana.addItemListener(this);
straw.addItemListener(this);
ch.addItemListener(this);
}
public static void main(String[] args) {
new ItemTest();
}
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
@Override
public void itemStateChanged(ItemEvent e) {
//eventsorce의 주체를 찾아냄
Object ob = e.getSource();
if (ob == ch) { // eventsource가 ch라면
String str = ch.getSelectedItem();
if (str.equals("아침")) {
mor.setState(true);
} else if(str.equals("점심")) {
aft.setState(true);
} else {
eve.setState(true);
}
}
Checkbox sel = cbg.getSelectedCheckbox();
String selStr = sel.getLabel();
System.out.println(selStr); //아침,점심,저녁이 체크될때 마다 콘솔창에 뜸
ta.setText("---"+selStr+"---\n"); //setText는 TextArea 전체를 바꾸는 것
ta.append("1. 사과 : " + eat(app.getState())+"\n");
ta.append("2. 바나나 : " + eat(banana.getState())+"\n");
ta.append("3. 딸기 : " + eat(straw.getState())+"\n"); //따라서 첫번째 것은 고정이니 setText하고 나머진 append로 더하기
ch.select(selStr);
}
//사과,바나나,딸기 체크되어있으면 먹었다, 안먹었다 method
private String eat(boolean flag) {
return flag ? "먹었다." : "안먹었다.";
}
}
결과
[출처] 빡쏘끼룩
'IT > JAVA' 카테고리의 다른 글
[Java] java.awt.event - Logic과 디자인 2개로 분리 (0) | 2020.10.03 |
---|---|
[Java] java.awt.event 예제 (0) | 2020.10.02 |
[Java] java.awt - (Button, Label, TextField, TextArea, Choice, CheckBox, List, Scrollbar 등) (0) | 2020.09.11 |
[Java] java.Util - Calendar,Date,Random,Stringtokenizer / java.text.format - DateFormat,NumberFormat (0) | 2020.09.07 |
[Java] java.lang - String Vs StringBuffer (0) | 2020.08.31 |