Java Rotate Ellipse on KeyPress



我有基本的Java知识,我需要创建一个Sunset应用程序。如果按键盘右键,太阳需要以一定角度旋转。当我按下右键时,它不会重绘或移动椭圆,我已经与 syso 检查了听众是否工作并输出测试,所以我在旋转和填充方面遇到了问题......有人可以帮助我吗?这是我的Jpanel课程...

public class OEF7 extends JPanel implements KeyListener{
private Graphics2D g2d;
private Ellipse2D sun;
public void paintComponent( Graphics g){
    super.paintComponent(g);
     g2d = (Graphics2D) g;
    g2d.setPaint(new GradientPaint(50,50,Color.RED, 100,100,Color.YELLOW,true));
    sun = new Ellipse2D.Double(0,0,50,50);
    g2d.translate(350, 200);
}
@Override
public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if (e.getKeyCode() == 39) {
         g2d.rotate(Math.PI/10.0);
         g2d.fill(sun);
         //---- repaint() ?
        }
}

图形对象仅在绘画期间有效。 如果保存它并尝试在其他方法(如 KeyListener 方法(中使用它,则它不再有效。 此时修改它没有任何作用。

您的类需要将旋转存储在字段中,然后在绘画过程中使用该字段:

private double rotation;
// ...
@Override
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
        rotation = (rotation + Math.toRadians(10)) % (Math.PI * 2);
        repaint();
    }
}

最新更新