Обработка действий клавиатуры - Java

  1. Можете написать несколько строк кода, которые реагируют на нажатие клавиш? Напишу на русском, т.к. не совсем понимаю: public void keyPressed{ если нажали на кнопку "вверх" переменная х=1; если нажали на кнопку "вниз" переменная х=-1; если нажали на кнопку "вправо" переменная у=1; если нажали на кнопку "влево" переменная у=-1; } Помогите пожалуйста реализовать


textual

Код к задаче: «Обработка действий клавиатуры - Java»

public class MyFrame extends JFrame {
 
    public MyFrame(String Cap) {
        super(Cap);
        setSize(new Dimension(500, 500));
        setVisible(true);
 
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent evt) {
                switch (evt.getKeyCode()) {
                    case KeyEvent.VK_UP:
                        y -= 1;
                        DrawRect();
                        break;
                    case KeyEvent.VK_DOWN:
                        y += 1;
                        DrawRect();
                        break;
                    case KeyEvent.VK_LEFT:
                        x -= 1;
                        DrawRect();
                        break;
                    case KeyEvent.VK_RIGHT:
                        x += 1;
                        DrawRect();
                        break;
                }
            }
        });
    }
 
    @Override
    public void paint(Graphics g){
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.BLACK);
        g.drawRect(x, y, 100, 100);
    }
 
    public void DrawRect() {
        this.repaint();
        this.getGraphics().drawRect(x, y, 100, 100);
    }
    private int x, y;
}

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 3.571 из 5



Похожие ответы
  1. Добрый вечер! Пытаюсь сделать простой калькулятор на Java c использованием компонентов Swing. При запуске кода выдает ошибку Error105, 1) java: class, interface, or enum expected. Я не очень понимаю в чем проблема. Кроме того в обработке нажатия не видит TextBox, значения которых я пытаюсь обработать. Что не так?

  1. Здравствуйте, помогите разобраться:Добавлено через 10 минут у меня есть три класса - первый создает окно программы и график, второй - метод золотого сечения, третий - запускает второй с параметрами и выводит данные. Суть вопроса - как правильно в первый добавить обработку события jButton, что бы при нажатии на кнопу запускался третий класс и выводил его результаты в jTextFiend. Код первого класса:

  1. Не подскажете, как сделать так, что бы при выделении TextField, исчезал написанный там текст? Вернее, сам метод написать то не трудно, а как сделать слушатель для кнопки. Сделал как с кнопкой, но понятное дело ,что так не получается.

  1. Подскажите, как правильно реализовать слушатель мышь в данном примере. После запуска появляется окно с тележкой, которая двигается от одно края к другому. Нужно чтобы по щелчку мышь тележка меняла направление.

  1. Всем добрый день! Как обработать нажатия одной клавиши с клавиатуры - все кристально понятно. А если, предположим, необходимо сделать обработку нажатия ctrl + alt + q и сделать, предположим, 2 кнопки на JPanel видимыми, как это можно реализовать?

  1. Подскажите пожалуйста, как сделать что бы по нажатию пункта меню надо будет менять количество кнопок на панели, а ненужные скрывать.

  1. Здравствуйте! При работе программы иногда появляется необработанное исключение NullPointerException. Тем не менее работа программы не прекращается и дальше все работает как надо. Исключение выскакивает не при каждом запуске программы (в большинстве случаев программа работает без появления этого исключения). Еще из сообщения исключения не могу понять в какой строчке ошибка. Текст исключения: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.plaf.basic.BasicProgressBarUI.updateSizes(BasicProgressBarUI.java:488) at javax.swing.plaf.basic.BasicProgressBarUI.getBox(BasicProgressBarUI.java:445) at com.sun.java.swing.plaf.windows.WindowsProgressBarUI.getBox(WindowsProgressBarUI.java:242) at com.sun.java.swing.plaf.windows.WindowsProgressBarUI.paintIndeterminate(WindowsProgressBarUI.java:296) at javax.swing.plaf.basic.BasicProgressBarUI.paint(BasicProgressBarUI.java:410) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) at javax.swing.JComponent.paintComponent(JComponent.java:778) at javax.swing.JComponent.paint(JComponent.java:1054) at javax.swing.JComponent.paintChildren(JComponent.java:887) at javax.swing.JComponent.paint(JComponent.java:1063) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221) at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482) at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413) at javax.swing.RepaintManager.paint(RepaintManager.java:1206) at javax.swing.JComponent._paintImmediately(JComponent.java:5169) at javax.swing.JComponent.paintImmediately(JComponent.java:4980) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677) at javax.swing.RepaintManager.access$700(RepaintManager.java:59) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:691) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) Подскажите, в чем ошибка и как ее исправить? Заранее спасибо!

  1. Приветствую. Столкнулся с проблемой при обработке событий и использовании метода paint() Необходимо создать апплет, который при клике мышкой меняет геометрическую фигуру. Использовал только MouseListener. Вот код того, что я пока имею на данный момент.