뚜벅이

JAVA -keylistener 의 아들 keyadapter// 숫자이외 입력 씹어버리기. 본문

국비과정 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(); // 이건 컴파일 오류 없음 .

 

왜?   일단 부모부터 체크  :  두놈 들 사이에서 부모는  텍스트 컴포넌트임. 

 

-