일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Short
- 콜렉션
- 박싱
- start.spring.io
- 컬렉션
- 싱글턴
- 자동형변환
- 제네릭
- 제너릭
- Jenkins
- 스프링
- 싱글톤
- suvlet
- 인텔리제이
- 언박싱
- Scanner
- 메소드
- dependency
- Java
- bootstrap
- https://start.spring.io
- 무한
- maven
- 클래스
- unboxing
- 루프
- boxing
- 빌드
- wrapper
- 내장객체
Archives
- Today
- Total
Developer Gonie
[5주차] 94. AWT, "이벤트 처리방법1(리스너 implements)" Frame 클래스 외부 클래스에서 처리하는 방법 & 이벤트 종류 본문
K-DigitalTraining 강의/1. Java
[5주차] 94. AWT, "이벤트 처리방법1(리스너 implements)" Frame 클래스 외부 클래스에서 처리하는 방법 & 이벤트 종류
이대곤 2022. 6. 8. 17:41
버튼에서 발생하는 이벤트 처리 예시
- Button은 클릭당하면 new ActionEvent 이벤트 객체를 발생시키고, 이를 계속 살펴주는건 ActionListener이다.
import java.awt.*;
import java.awt.event.*; // ActionListener 인터페이스를 위해 한 것
class Sub2 extends Frame implements ActionListener{
Button b1 = null;
Button b2 = null;
Button b3 = null;
Button b4 = null;
Sub2(String title){
super(title);
super.setSize(400,300);
/*버튼 객체 생성*/
b1 = new Button("노란색");
b2 = new Button("빨간색");
b3 = new Button("파란색");
b4 = new Button("초록색");
/*각각의 버튼에 리스너를 달아줌(버튼은 ActionEvent가 발생하므로 해당 리스너를 선택해 달아줌)*/
// Button은 ActionEvent가 발생하는데, 이벤트 발생시 해당 이벤트 관련 객체가 만들어짐 new ActionEvent()
// Choice ItemEvent가 발생하면 new ItemEvent() 하면서 이벤트 객체가 생성됨
// Frame WindowEvent가 발생하면 new WindowEvent() 하면서 이벤트 객체가 생성됨
// this는 현재클래스를 의미하고 ActionEvent가 발생하면 이(this) 클래스에서 이벤트 핸들러를 찾아서 호출하라는 의미.
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
/*레이아웃 지정*/
setLayout(new FlowLayout());
/*프레임(컨테이너)에 버튼 추가*/
add(b1);
add(b2);
add(b3);
add(b4);
/*버튼의 색깔 변경*/
b1.setBackground(Color.yellow);
/*버튼의 글씨 변경*/
b2.setForeground(Color.RED);
b3.setForeground(Color.blue);
}
/*ActionListener 인터페이스를 상속받았기 때문에 미완성 메소드를 완성시켜줘야 함*/
@Override
public void actionPerformed(ActionEvent e) { // 파라미터로, 갑자기 만들어진 이벤트 객체를 받을 수 있도록 하는 구조. try-catch에서 catch문과 비슷함.
Object obj = e.getSource();
// 모든 버튼의 이벤트를 이 메소드가 다 받기 때문에 어느 컴포넌트로부터 발생한 이벤트인지 구분해서 처리해야함
if(obj == b1) {
setBackground(Color.yellow);
}else if (obj == b2){
setBackground(Color.RED);
}else if (obj == b3){
setBackground(Color.BLUE);
}else {
setBackground(Color.green);
}
System.out.println("actionPerformed");
}
}//Sub2
public class Ex12_03_ActionEvent {
public static void main(String[] args) {
Sub2 f = new Sub2("AWT예제");
f.setVisible(true);
}
}
선택박스에서 발생하는 이벤트 처리 예시
- Choice 박스는 선택하면 new ItemEvent 이벤트 객체를 발생시키고, 이를 계속 살펴주는건 ItemListener이다.
import java.awt.*;
import java.awt.event.*;
class Sub3 extends Frame implements ItemListener{
Choice ch;
Label lb;
Sub3(String title){
super(title);
setSize(300,200);
setVisible(true);
setLayout(new FlowLayout());
ch = new Choice(); // 선택박스, 선택시 new ItemEvent() 이벤트를 발생시킴
lb = new Label("가나다라마");
lb.setBackground(Color.PINK);
ch.addItemListener(this);
ch.add("진달래");
ch.add("장미");
ch.add("개나리");
ch.add("벚꽃");
add(ch);
add(lb);
}
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println("choice 변화생김");
System.out.println(ch.getSelectedIndex() + "" + ch.getSelectedItem());
lb.setText(ch.getSelectedItem());
}
}
public class Ex12_04_Choice {
public static void main(String[] args) {
Sub3 s = new Sub3("Choice");
}
}
윈도우 창에서 발생하는 이벤트 처리 예시
import java.awt.*;
import java.awt.event.*;
class Sub6 extends Frame implements WindowListener{
Sub6(String title){
super(title);
setSize(300,200);
setVisible(true);
this.addWindowListener(this);
}
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("창이 닫힘");
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("11");
}
@Override
public void windowActivated(WindowEvent e) {
System.out.println("창이 활성화됨");
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}
public class Ex12_06_WindowEvent {
public static void main(String[] args) {
new Sub6("WindowEvent");
}
}
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
[5주차] 96. AWT, "이벤트 처리방법3" 이벤트 처리시 리스너 인터페이스가 아닌 Adapter클래스를 이용하는 방법(필요한 메소드만 구현하고 싶을 때) (0) | 2022.06.09 |
---|---|
[5주차] 95. AWT, "이벤트 처리방법2(리스너 implements)" Frame 클래스 외부 클래스에서 처리하는 방법 (0) | 2022.06.09 |
[5주차] 93. AWT, FlowLayout 배치 예시 코드 (0) | 2022.06.08 |
[5주차] 92. AWT, BorderLayout 배치 예시 코드 (0) | 2022.06.08 |
[5주차] 91. AWT, 레이아웃의 대표적인 종류 (0) | 2022.06.08 |
Comments