У меня есть прямоугольник, в котором я хотел вращаться. Так что я просто сделал так, чтобы он переключал ширину и высоту каждый раз, когда я нажимаю клавишу. Но этот ключ также перемещает прямоугольник вниз, поэтому после повторного щелчка он возвращается в прежнее положение.
Итак, я хочу знать, как сделать так, чтобы он вращался только один раз, а затем после этого, если снова нажать вниз (клавишу, которая заставляет его вращаться), он просто перемещается вниз, но не вращается снова.
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
}
}