GUI 이벤트처리(3)_Key

ChoRong0824·2022년 9월 20일
0

Java_GUI

목록 보기
5/9

Key 이벤트와 포커스

키 입력 시, 다음 세 경우에 Key 이벤트 발생

  • 키를 누르는 순간
  • 누른 키를 떼는 순간
  • 누른 키를 떼는 순간(Unicode 키의 경우에만)

키 이벤트를 받을 수 있는 조건

  • 모든 컴포넌트 가능하지만, 현재 포커스(focus)를 가진 컴포넌트

포커스(focus)

  • 컴포넌트나 응용프로그램이 키 이벤트를 독점하는 권한
  • 컴포넌트에 포커스 설정 방법 : 다음 2 라인의 코드 필요
    component.setFocusable(true); // component가 포커스를 받을 수 있또록 설정
    component.requestFocus(); //component에 포커스 강제 지정
    (참고)
    - 자바 플랫폼마다 실행 환경의 초기화가 서로 다를 수 있기 떄문에 다음 코드가 필요.
    component.setFocusable(true);

컴포넌트에 포커스 주기

스윙 프레임이 만들어질 포커스를 주고자 하는 경우

  • JFrame의 setVisible(true) 이후에 포커스를 주어야함
    setVisible(true); //스윙 프레임 출력
    component.setFocusable(true);
    component.requestFocus();

마우스로 컴포넌트를 클릭할 때 포커스 지정하는 방법

  • 언제든지 필요할 때 포커스 줄 수 있음
component.addMouseListener(new MouseAdapter()){
	public void mouseClicked(MouseEvent e){
    	Component c = (Component)e.getSource(); // 클릭된 컴포넌트
        c.setFocusable(true);
        c.requestFocus();
        }
        }}; // 예제 10-8에서 활용했었음.

KeyListener의 메소드와 키



키는 2가지 종류



입력된 키 판별

  • 키가 입력되면 키 정보를 가진 이벤트 객체 생성 : KeyEvent 객체
    - KeyEvent 객체가 리스너에 전달됨
  1. 키의 문자 코드 (유니코드) 알아내기, char KeyEvent.getKeyChar()
  • 눌러진 키에 해당하는 문자 코드(유니코드) 리턴
  • 눌러진 키가 문자 키인 경우에만 작동
  1. 입력된 키의 가상 키 값 알아내기, int KeyEvent.getKeyCode()
  • 모든 키에 대해 작동
  • 입력된 키를 판별하기 위해 가상키(Virtual Key) 값과 비교
    - 가상 키 값은 KeyEvent 클래스의 상수로 정의됨
  1. 키 이름 문자열 리턴 String KeyEvent.getKeyText(int keyCode)
  • Static 메소드
  • 매개변수 KeyCode의 코드 값(가상 키)에 해당하는 키의 이름 문자열 리턴
    - F1 키의 경우 "F1", Shift 키의 경우 "SHIFT" 등의 문자열 리턴

KeyEvent의 getKeyChar()과 getKeyCode()

예제 10-6 : 다양한 KeyEvent와 KeyListener 활용

  • keyMessage[i].setOpaque(true);
    -> 컴포넌트의 바탕색이 보이도록 하기 위해서는 컴포넌트가 불투명하게 지정되어야 함.
  • keyMessage[0~2].setText
    ->KeyAdapter 상속이유
profile
정진, "어제보다 더 나은 오늘이 되자"

0개의 댓글