как вызвать функцию Keypress в основной Java - PullRequest
0 голосов
/ 28 сентября 2018

так что у меня есть только эта функция keyPressed(KeyEvent e) в моем классе, и я пытаюсь вызвать ее в основном, но она не работает.я знаю, что не должен инициализировать KeyEvent со значением NULL, но я не знаю, как его назвать

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);
}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы отправляете значение null в качестве параметра для функции.

Таким образом, оно обязательно произойдет сбой при

     int key = e.getKeyCode();

с NullPointerException, поскольку e равно null Вы не можете вызвать getKeyCode() для null объекта

Попробуйте передать действительный 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); на код, чтобы найти ключEvent

Также, если вы хотите предотвратить 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;
            }
        }
0 голосов
/ 28 сентября 2018

Обновление (для этот комментарий ) :

Вы получите NullPointerException в своем методе keyPressed(KeyEvent e), потому что выне проверял, является ли переданный аргумент null или нет, прежде чем пытаться получить доступ к e.getKeyCode();.

Попробуйте проанализировать 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);
...