创建一个关于键盘事件的程序。该程序实现了当
用户按下键盘时,程序中的一个面板中将显示用户的键盘输入。为了实现对键盘事件进行处理,容器类必须实现接口KeyListener.该接口定义了3个
方法KeyPressed(KeyEvebt e)、KeyReleased(Key-Event e)、KeyTyped(KeyEvent e)。其中,当按下一个键时,
调用KeyTyped方法;释放一个键时,调用KeyReleased方法;如果一个字符键被按下,那么会调用KeyTyped方法。因此,当按下一个键时,通常会产生两到三个事件。实验KeyType方法,以显示用户输入的字符。(1)创建一个名为KeyEventDemo的java文件。(2)在该文件中创建KeyEventDemo类,该类继承了JFrame,并实现KeyListener接口。(3)在KeyEventDemo类中实现在KeyPressed、KeyReleased和KeyType方法。(4)在KeyEventDemo类中添加String类型变量。该变量用于保存用户输入的字符。(5)在KeyType方法中调用KeyEvent的getKeyChar()方法,获取用户输入的字符,并保存到String类型变量中。最后调用repaint方法更新显示用户输入的字符串。(6)为KeyEventDemo类添加paint方法,此方法负责显示用户输入的字符。(7)用户也可以在KeyPressed和KeyReleased方法中间调用getKeyCode方法,以获取特殊的按键。比如方向键和退格键。因为你添加的面板上含有按钮,第一个按钮默认会获得焦点,只有获得焦点组建才会相应事件。因为Frame无法获得焦点,所以就无法再响应事件了。如果把JButton改成JLabel,就不会有问题了。JLabel默认不会获得焦点,焦点仍然在Frame上,所以还会响应事件。
采用楼上,或改为
class MessagePanel extends JPanel {
public MessagePanel() {
setLayout(new GridLayout(8, 1))
JButton b
for (int i = 0i <8i++) {
b = new JButton("没用的按钮")
b.setFocusable(false)
add(b)
}
}
java中 改该构造函数的说明如下
KeyEvent
public KeyEvent(Component source,
int id,
long when,
int modifiers,
int keyCode,
char keyChar)构造一个 KeyEvent 对象。
注意,传入无效的 id 将导致不明确的行为。如果 source 为 null,则此方法抛出 IllegalArgumentException。
评论列表(0条)