국비과정 JAVA공부
JAVA -keylistener 의 아들 keyadapter// 숫자이외 입력 씹어버리기.
ZZM
2021. 3. 19. 08:52
반응형
텍스트필드 , 패스워드필드 등
내용물안에 숫자랑 백스페이스 만 입력되게 하는 키리스너클래스 .
@SuppressWarnings("all") // "all" --> 모든 컴파일 경고 억제
public class PassWordEvent extends KeyAdapter {
@Override
public void keyTyped(KeyEvent e) {
JPasswordField content = (JPasswordField) e.getSource(); // 이벤트 발생 객체 주소를 할당
int textLeng = content.getText().length();
char c = e.getKeyChar();
if (!Character.isDigit(c)) { // 해당 char가 숫자로 변환 가능하면 true
e.consume(); // 이벤트 소멸 메서드
return;
}
// if (textLeng == 6) {
// e.consume(); // 이벤트 소멸 메서드
// return;
// }
}
}
1. 입력되는 키를 받는다. key pressed 는 consume 이 작동을 안하는 것 확인함.
- consume 은 keytyped 에서 작용된다? . 아직 이유는 모름.
content 에서는 jp field를쓸수도 있고. j tfield쓸수도 있다.
bvvvv 패스워드 필드 << JtextField << JtextComponent ...
어차피 부모라서. 괄호속에 JtextComponent 로 받아주면 문제없이 돌아간다. 상속관계 체크.
그위에는 JComponent 가 있는데 . 이걸로 형변환하여 선언하면 문제가생긴다. 왜 ? getText 메서드가 없어버린다..
그래서 최대치는 JtextComponent.
스윙의 세계는 넓고. 상속관계 확인의 세계도 참으로 넓구나.
다형성 이해
JTextField tfPhoneNum = (JTextComponent) e.getSource(); // 이건 컴파일 오류
JTextComponent tfPhoneNum = (JTextField) e.getSource(); // 이건 컴파일 오류 없음 .
왜? 일단 부모부터 체크 : 두놈 들 사이에서 부모는 텍스트 컴포넌트임.
-
반응형