keypress.java

来自「Corejava」· Java 代码 · 共 99 行

JAVA
99
字号
//KeyPress.java

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

public class KeyPress
{
	public static void main(String[] args)
	{  
		KeyFrame frame = new KeyFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.show();
	}
}

class KeyFrame extends JFrame
{
	public KeyFrame()
	{
		setTitle("KeyPress");
		setSize(WIDTH, HEIGHT);
		
		// 将panel加入到frame
		KeyPanel panel = new KeyPanel();
		Container contentPane = getContentPane();
		contentPane.add(panel);
	}
	
	public static final int WIDTH = 300;
	public static final int HEIGHT = 200;  	
}

class KeyPanel extends JPanel
	implements KeyListener
{  
	public KeyPanel()
	{  
		//注册监听器
		addKeyListener(this);
	}

	public boolean isFocusTraversable()
	{  
		//允许面板获得焦点
		return true; 
	}
		
	public void paintComponent(Graphics g)
	{  
		super.paintComponent(g);

		//输出虚拟键码
		if(KeyVirtualCode == -1)
			g.drawString("虚拟键码:", 100, 80);
		else
			g.drawString("虚拟键码:" + KeyVirtualCode, 100, 80);

		//输出键的名称
		g.drawString("键名称:"+ KeyText, 100, 110);

		//输出字符
		g.drawString("字符:"+ KeyChar, 100, 140);
	}
	
	public void keyPressed(KeyEvent event)
	{  
		//得到虚拟键码
		KeyVirtualCode = event.getKeyCode();
	}
	
	public void keyReleased(KeyEvent event)
	{  
		KeyVirtualCode = event.getKeyCode();

		//得到键的名称
		KeyText = event.getKeyText(KeyVirtualCode);
		
		//得到字符
		if(!isChar)
		{
			KeyChar= ' ';
		}
		isChar = false;

		repaint();
	}
	
	public void keyTyped(KeyEvent event)
	{  
		KeyChar = event.getKeyChar();
		isChar = true;
	}
	
	public char KeyChar = ' ';
	public int KeyVirtualCode = -1;
	public String KeyText = "";
	public boolean isChar = false;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?