觅求高手.java键盘事件.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了觅求高手.java键盘事件.相关的知识,希望对你有一定的参考价值。
创建一个关于键盘事件的程序.该程序实现了当用户按下键盘时,程序中的一个面板中将显示用户的键盘输入.为了实现对键盘事件进行处理,容器类必须实现接口KeyListener.该接口定义了3个方法KeyPressed(KeyEvent e) KeyReleased(KeyEvent e) KeyTyped(KeyEvent e).其中,当按下一个键时,调用KeyPressed方法,释放一个键时,调用KeyReleased方法,如果一个字符键被按下,那么就会调用KeyTyped方法.因此,当按下一个键时,通常会产生两到三个事件.在此练习中,我们将只实现KeyType方法,以显示用户输入的字符.
要求:
1.在该文件中创建KekEventDemo类,该类继承了JFrame,并实现KeyListener接口.
2.在KeyEventDemo类中实现在KeyPressed ,KeyReleased和KeyType方法.
3.在KeyEventDemo类中添加String类型变量,该变量用于保存用户输入的字符.
4.在KeyType方法中调用KeyEvent的getKeyChar()方法,获取用户输入的字符,并保存到String类型变量中.最后调用repaint方法更新显示用户输入的字符串.
5.为KeyEventDemo类添加paint方法,此方法负表显示用户输入的字符串.
6.用户也可以在KeyPressed和KeyReleased方法中调用getKeyCode方法,以获取特殊的按键.比如方向键和退格键.
初步设计.里面的错误我也找不出来.
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics.*;
class KeyEventDemo extends Frame implements KeyListener
public char keyChar=' ';
public int keyVirtualCode=-1;
public String keyText="";
public boolean isChar=false;
public KeyEventDemo ()
addKeyListener(this);
public boolean isFocusTraversable()
return true;
public void paint(Graphics g)
super.paint(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 e)
keyVirtualCode=e.getKeyCode();
public void keyReleased(KeyEvent e)
keyVirtualCode=e.getKeyCode();
keyText=e.getKeyText(keyVirtualCode);
if(!isChar)
keyChar=' ';
isChar=false;
this.repaint();
public void keyTyped(KeyEvent e)
keyChar=e.getKeyChar();
isChar=true;
class Ket
public static void main(String[] args)
KeyEventDemo kf=new KeyEventDemo();
kf.setVisible(true);
KeyEventDemo keyEventDemo=new KeyEventDemo();
帮忙测试一下,能帮我把错误改正过来吗?急用.
窗体尺寸设一下,自己改一下就可以用了.
kf.setVisible(true); 之前加上
kf.setSize(300,300);
再加上WidowListener。
====================================================
kf.setSize(300,300);
kf.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)System.exit(1););
kf.setVisible(true);
====================================================
F:\Lesson\qinghua\class>javac KeyEventDemo.java
注意:KeyEventDemo.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
F:\Lesson\qinghua\class>java Ket
运行正常啊! 参考技术A 1
java事件处理4(焦点,键盘
FocusEvent焦点事件
接口
addFocusListener(FocusListener listener)
有两个方法
public void focusGains(FocusEvent e) public void focusLost(FocusEvent e)
测试代码
class MyWin extends JFrame{ JTextField text1,text2; JButton button1,button2; MyWin(){ init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void init(){ text1=new JTextField(8); add(text1); setLayout(new FlowLayout()); FocusPolice focusPolice1=new FocusPolice(); text1.addFocusListener(focusPolice1); add(new JButton("click")); } } class FocusPolice implements FocusListener{ public void focusGained(FocusEvent e){ System.out.print("11"); } public void focusLost(FocusEvent e){ System.out.print("22"); } }
键盘事件
addKeyLIstener(KeyEvent e)
KeyListener 有三个接口
publice void keyPressed(KeyEvent e)//按下键盘 publice void keyReleased(KeyEvent e)//释放键盘 publice void keyTyped(KeyEvent e)//一套动作
KeyEvent有两个方法
getKeyCode()//返回一个键码值,但不知道我总是返回0 getKeyChar()//返回键上的字符
一个自动跳文本框的代码
class MyWin extends JFrame{ JTextField text[]=new JTextField[3]; JButton button1,button2; MyWin(){ init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void init(){ setLayout(new FlowLayout()); KeyPolice keyPolice1=new KeyPolice(); for(int i=0;i<3;i++){ text[i]=new JTextField(8); text[i].addKeyListener(keyPolice1); text[i].addFocusListener(keyPolice1); add(text[i]); } text[1].requestFocusInWindow(); add(button1=new JButton("click")); } } class KeyPolice implements KeyListener,FocusListener{ public void keyPressed(KeyEvent e){} public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){ JTextField text1=(JTextField)e.getSource(); if(text1.getText().length()>=6)//有7个才会跳 text1.transferFocus();//跳函数 } public void focusGained(FocusEvent e){ // JTextField text=(JTextField)e.getSource();//看起来没有用 // text.setText(null); } public void focusLost(FocusEvent e){} }
以上是关于觅求高手.java键盘事件.的主要内容,如果未能解决你的问题,请参考以下文章