在双重位置绘制jpanel

时间:2018-05-03 20:55:50

标签: java swing animation game-physics

我有一个jpanel,我在一个步骤事件中重新绘制。它需要一个汽车位置x并绘制它。这适用于整数,但我想使用双精度。汽车对象x和y需要加倍,因为我想在一个方向上旋转和加速。有任何想法吗?这是我目前的代码:

public class Map extends JPanel implements ActionListener {

    private void step() {
        for(int i = 0; i <cars.length; i++) {
            Car car = cars[i];       
            car.move();
            repaint(car.getX()-1, car.getY()-1, car.getWidth()+2, car.getHeight()+2);  
        }   
    }
}

1 个答案:

答案 0 :(得分:1)

  1. 一种可能性是您在程序的模型中使用双打,这些类描述系统的状态,并在视图中使用整数(通过强制转换或舍入) - - 您的GUI图形代码 - 显示模型的状态时。
  2. 另一个是您考虑使用实现Shape接口的类,例如library(ggplot2) foo <- data.frame(x=runif(50),y=runif(50)) bar <- data.frame(x1=c(0.2,0),x2=c(0.7,0.2), y1=c(0.1,0.9),y2=c(0.6,0.5), lbl=c("Arrow 1", "Arrow 2")) p1 <- ggplot(data=foo,aes(x=x,y=y)) p1 <- p1 + geom_point(color="grey") p1 <- p1 + geom_segment(data=bar,aes(x=x1, xend=x2, y=y1, yend=y2), size = 0.75,arrow = arrow(length = unit(0.5, "cm"))) p1 Rectangle2DEllipse2D,因为它们使用double或float说明符进行定位
  3. 您当前的代码被破坏,因为代码在Swing事件线程上被调用,但似乎试图在for循环中进行动画处理。这不会起作用,并且只会显示动画的开始和结束状态,因为它会阻止Swing事件线程。而是使用Swing Timer来驱动动画。