我有基本的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();
}
}