觅求高手.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键盘事件.的主要内容,如果未能解决你的问题,请参考以下文章

Java Swing中键盘输入事件及处理

java 事件监听 - 键盘

Java JTable 添加了一个键盘事件,和鼠标点击事件的监听,如何在我键盘事件起作用时,让鼠标事件失效

Android 键盘事件触发以及监听

Java Swing中键盘的处理

C# winform 屏蔽键盘事件 和 鼠标右键