본문 바로가기

프로그래밍 일반/JAVA

[JAVA] GUI에서 Component 활용하기 2 - 기능입히기

jbutton에 기능을 입히기 위해서는 KeyListener함수에 KeyListner() 인터페이스를 재정의하면 됩니다.

 

        jbutton.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO Auto-generated method stub
                if(e.getKeyCode() == KeyEvent.VK_S){
                    x += 5;
                    jbutton.setLocation(x, y);
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {
                // TODO Auto-generated method stub

            }
            
        });

 

그렇다면, 이렇게 정의할 때, 컴퓨터 내부는 어떻게 돌아가는지 알아보겠습니다.

만약에 프로그램이 돌아가고 있는 상태에서 키보드를 입력하게 되면, 프로그램에 KeyEvent의 상태 값이 변경됩니다.

VK(VirtualKeyboard)_S는 S를 눌렀을 때등입니다.

 

예를들어서 키 이벤트는 한번 변했으므로, 키리스너에 들어가게 됩니다. 키리스너는 그냥 함수입니다. addKeyListner()에 재정의 된 함수를 수행하게 되는 것입니다.

인터페이스를 재정의하게 되면, 해당 함수를 어떻게 수행할 것이지 명시하게 됩니다.

예를들어서 Jbutton내부에 메소드에서는

 

Public void A.KeyPressed(KeyEvent e);로 선언이 되어있다. (-> 오버라이드한다)

메소드는 아래와 같을 것이다.(눌렸을때, 뗏을때는 인터페이스일 뿐)

if(Keyevent.VK_PRESSED){

 keyPressed(); 함수 써라.

}

if(Keyevent.VK_PRESSED){

 keyPressed();

}

}

등으로 정의가 되어있고, KeyPressed()가 진행되면, 실제 그 내부 함수로 들어가서 수행되게 됩니다.