как повернуть прямоугольник в разгаре с KeyListener только один раз и нет, чтобы сделать это снова - PullRequest
0 голосов
/ 07 мая 2018

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

Итак, я хочу знать, как сделать так, чтобы он вращался только один раз, а затем после этого, если снова нажать вниз (клавишу, которая заставляет его вращаться), он просто перемещается вниз, но не вращается снова.

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class paint extends JLabel implements KeyListener {
    int x = 1;
    int y = 1;
    int velocity = 20;
    int w = 200;
    int h = 100;
    int temp;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        this.setBackground(Color.BLACK);
        g.setColor(Color.BLACK);

        g.setColor(Color.RED);
        g.fillRect(x, y, w, h);
        repaint();

    }
    //this is the section i am talking about.
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            y += velocity;
            System.out.println(y);
            //the next three lines rotate the rectangle
            temp = w;
            w = h;
            h = temp;

            if (y > 261) {
                y = 1;
            }

        }

        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            x += velocity;
            System.out.println(x);
            if (x > 591) {
                x = 1;
            }

        } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            x -= velocity;
            System.out.println(x);
            if (x < 1) {
                x = 591;
            }

        } else if (e.getKeyCode() == KeyEvent.VK_UP) {
            y -= velocity;
            System.out.println(y);
            if (y < 1) {
                y = 271;

            }
        }

    }

    public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }

    public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }

}
...