[Java] KeyEvent 예제

Useful·2023년 11월 16일
0

Java

목록 보기
9/10

코드 1


package p1;

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


public class KeyListenerEx extends JFrame {
	private JLabel keyMessage[];
	
	public KeyListenerEx() {
		super("keyListener 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		
		c.addKeyListener(new 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(e.getKeyText(keyCode));			// 이름 문자열
		}});
		
		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, 300);
		setVisible(true);
		
        // 키 입력을 받을 수 있도록 포커스를 주는 코드
		c.setFocusable(true);
		c.requestFocus();
	}
	

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

결과






코드 2


package p1;

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

public class MoveHelloLabel extends JFrame {
	private JLabel label;
	
	public MoveHelloLabel() {
		super("상,하,좌,우 키를 이용하여 텍스트 움직이기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setVisible(true);
		
		label = new JLabel("Hello");
		label.setSize(30, 50);
		label.setLocation(50, 50);
		
		Container c = getContentPane();
		c.setLayout(null);
		
		c.add(label);
		
		c.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				int keyCode = e.getKeyCode();
				int labelX = label.getX();
				int labelY = label.getY();
				
				if(keyCode == e.VK_DOWN) 
					label.setLocation(labelX, labelY + 10);
				else if(keyCode == e.VK_UP)
					label.setLocation(labelX, labelY - 10);
				else if(keyCode == e.VK_LEFT)
					label.setLocation(labelX - 10, labelY);
				else if(keyCode == e.VK_RIGHT)
					label.setLocation(labelX + 10, labelY);
			}
		});
		
		c.setFocusable(true);
		c.requestFocus();
	}

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

}

결과



profile
1 commit = 1 life

0개의 댓글