【问题标题】:how to call function Keypress in the main java如何在主java中调用函数Keypress
【发布时间】:2019-03-04 04:08:54
【问题描述】:

所以我在课堂上只有这个函数keyPressed(KeyEvent e),我试图在主函数中调用它,但它不起作用。我知道我不应该用 null 初始化 KeyEvent 但我不知道如何调用它

public void  keyPressed(KeyEvent e){
    int key = e.getKeyCode();

    switch(e.getKeyCode()) {

    case KeyEvent.VK_UP:
         break;
    case KeyEvent.VK_DOWN:
         break;
    case KeyEvent.VK_LEFT:
         break;
    case KeyEvent.VK_RIGHT:
         break;
}

public static void main(String args[]){
 Myclass class = new Myclass();
 KeyEvent KeyEvent = null;
 class.keyPressed(KeyEvent);
}

【问题讨论】:

  • 避免使用关键字作为变量名
  • 请接受对您解决问题最有帮助的答案。它可以帮助未来的读者。如果答案没有帮助,请将 cmets 留在他们下方。所以发布者可以相应地更新它们。

标签: java function main keypress keyevent


【解决方案1】:

更新(针对this comment

您将在keyPressed(KeyEvent e) 方法中获得NullPointerException,因为在尝试访问e.getKeyCode(); 之前,您没有检查传递的参数是否为null

尝试解析 KeyEvent 对象

Myclass c = new Myclass();
KeyEvent ke = new KeyEvent(new Component() {}, 0, 0l, 0, KeyEvent.VK_UP);
c.keyPressed(ke);

避免使用关键字作为变量名。试试这个,

Myclass c = new Myclass();
c.keyPressed(null);

【讨论】:

  • 我已经这样做了,但它不起作用我有 java.lang.NullPointerException
  • @Cristaline 立即查看答案
  • 我在初始化 KeyEvent KeyEvent KeyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_1); 时出错
  • 使用我在回答中提到的new KeyEvent(new Component() {}, 0, 0l, 0, KeyEvent.VK_UP)
  • 我已经这样做了,但我应该先初始化 KeyEvent.VK_UP :/
【解决方案2】:

您正在向函数发送一个null 值作为参数。

所以它肯定会崩溃

     int key = e.getKeyCode();

使用NullPointerException,因为enull,因为你不能在null 对象上调用getKeyCode()

尝试传递一个有效的KeyEvent 对象作为参数

例如:

public static void main(String args[]){
   Myclass myclass = new Myclass();
   KeyEvent KeyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_1);
   myclass.keyPressed(KeyEvent);
 }

注意:将new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_1);替换为查找keyEvent的代码

另外如果你想阻止NullPointerException,在keyPressed函数中做一个空检查,如下

 public void  keyPressed(KeyEvent e){
            if(e != null){
                int key = e.getKeyCode();

                switch(e.getKeyCode()) {

                case KeyEvent.VK_UP:
                     break;
                case KeyEvent.VK_DOWN:
                     break;
                case KeyEvent.VK_LEFT:
                     break;
                case KeyEvent.VK_RIGHT:
                     break;
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2021-09-02
    • 2012-09-30
    • 1970-01-01
    • 2020-10-18
    • 2021-06-24
    相关资源
    最近更新 更多