학교/2-2학기(Java)

[12주차] 11/20(수) 강의내용

C0MPAS 2024. 11. 20. 20:51

10.5 KeyEvent 와 KeyListener

- 컴포넌트에 포커스 주기

- Key 이벤트와 KeyListener

- 입력된 키 판별

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

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class KeyListenerEx extends JFrame{
	private JLabel[] keyMessage;
	public KeyListenerEx() {
		setTitle("keyListener 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		c.addKeyListener(new MyKeyListener());

		keyMessage = new JLabel[3];
		keyMessage[0] = new JLabel(" getKeyCode() ");
		keyMessage[1] = new JLabel(" getKeyChar() ");
		keyMessage[2] = new JLabel(" getKeyText() ");

		for(int i=0; i<keyMessage.length; i++) {
			c.add(keyMessage[i]);
			keyMessage[i].setOpaque(true);
			keyMessage[i].setBackground(Color.YELLOW);
		}

		setSize(300, 150);
		setVisible(true);

		c.setFocusable(true);
		c.requestFocus();
	}

	class MyKeyListener extends KeyAdapter{
		public void keyPressed(KeyEvent e) {
			int keyCode = e.getKeyCode();
			char keyChar = e.getKeyChar();
			keyMessage[0].setText(Integer.toString(keyCode));
			keyMessage[1].setText(Character.toString(keyChar));
			keyMessage[2].setText(KeyEvent.getKeyText(keyCode));
			System.out.println("KeyPressed");
		}

		public void keyReleased(KeyEvent e) {
			System.out.println("KeyReleased");
		}

		public void keyTyped(KeyEvent e) {
			System.out.println("KeyTyped");
		}
	}

	public static void main(String[] args) {
		new KeyListenerEx();
	}
}


출처: 명품 JAVA Programming(개정 5판), 생능출판사