자바 Event 핸들러 FocusListener, FocusAdapter와 FocusEvent

자바 Event 핸들러 ActionListener와 ActionEvent


FocusListener, FocusAdapter와 FocusEvent


  • . Focus 타입의 Event는 인터페이스인 FocusListener와 클래스인 FocusAdapter를 가진다 .
  • . 관련 메서드 :
  • public void focusGained(FocusEvent e) {}
  • public void focusLost(FocusEvent e) {}
    Focus타입은 대부분의 실무에서 사용됨 Event가 하는 역할은 해당 컴포넌트가 포커스(Focus) 를 얻었는지 혹은 잃었는지에 대한 여부를 판단하는 것이다 .

ex ) 이예제는 Focus Event의 작동 내용은 이름필드에 아무것도 넣지 않았을 때에는 주민등록 번호
필드로 이동을 못하게 할 것이고 주민등록번호 첫 번째 필드에 6자리의 수를 입력하지 않았을 때에
는 주민등록번호 두번째 자리로 이동하지 못하게 하는 예제

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import java.awt.*;
import java.awt.event.*;

class Round18_Ex03_Sub extends Frame implements FocusListener {
private BorderLayout lb = new BorderLayout();
private Label lb = new Label("이름 = ", Label.RIGHT);
private Label lb1 = new Label("주민번호 = ", Label.RIGHT);
private TextField tf = new TextField();
private TextField tf1 = new TextField();
private TextField tf2 = new TextFileld();
private Button bt = new Button("확인");
private Button bt1 = new Button("취소");

public Round19_Ex03_Sub() {
super("Focus Event !!");
this.init();
this.start();
this.setSize(200, 100);
this.setVisible(true);
}

public void init() {
this.setLayout(bl);
Panel p = new Panel(new GridLayout(2, 1));
p.add(tf);
Panel p1 = new Panel(new GridLayout(1, 2, 5, 5));
p1.add(tf1);
p1.add(tf2);
p.add(p1);
this.add("Center", p);
Panel p2 = new Panel(new GridLayout(2, 1));
p2.add(lb);
p2.add(lb1);
this.add("West", p2);
Panel p3 = new Panel(new FlowLayout(FlowLayout.RIGHT));
p3.add(bt);
p3.add(bt1);
this.add("South", p3);
}

public void start() {
tf1.addFocusListener(this);
tf2.addFocusListener(this);
// FocusListener를 호출한다 매게변수로는 this즉 자기의 값을 참조해서 던진다.
}

public void focusGained(FocusEvent e) {
// 포커스가 얻었을때 즉 포커스커서가 있을때 일어나는 이벤트
if (e.getSource() == tf1) {
// tf1에 포커스다 있을때
int x = tf.getText().trim().length();
// tf의 문자열 길이를 잰다
if (x == 0) {
// tf의 문자가 null이거나 값이 없을때
tf.request.Focus();
// tf로의 포커스를 돌린다
}
} else if (e.getSource() == tf2) {
// tf2에 포커스가 있을때
int x = tf1.getText().trim().length();
// tf1의 길이를 잰다 주민번호는 6자리이므로
if (x != 6) {
// 6자리가 아닐경우애는
tf1.setText("");
// tf1의 텍스트를 ""로만든다
tf1.requestFocus();
// tf1로 포커스를 돌린다
}
}
}

public void focusLost(FocusEvent e) {
}
// 포커스를 잃었을때 일어나는 이벤트 javascript의 onblur()와 같은기능
}

public class Round19_Ex03 {
public static void main(String[] ar) {
Round19_Ex03_Sub es = new Round19_Ex03_Sub();
}
}
Share