Нарисуйте jpanel в двойной позиции - PullRequest
0 голосов
/ 03 мая 2018

У меня есть jpanel, который я перекрашиваю в шаговом событии. Он берет позицию машины х и рисует ее. Это работает с целыми числами, но я хотел бы использовать двойной. Автомобильные объекты 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 голосов
/ 04 мая 2018
  1. Одна возможность для вас - использовать double в модели вашей программы, классы, описывающие состояние вашей системы, и использовать целые числа (путем приведения или округления) в представлении - графический код вашего графического интерфейса пользователя. - при отображении состояния модели.
  2. Другой вариант - рассмотреть возможность использования классов, реализующих интерфейс Shape, таких как Rectangle2D, Ellipse2D и Path2D, так как они используют спецификаторы типа double или float для позиционирования
  3. Ваш текущий код не работает из-за того, что код вызывается в потоке событий Swing, но, похоже, пытается анимировать внутри цикла for. Это не сработает, и покажет только начальное и конечное состояние анимации, поскольку она блокирует поток событий Swing. Вместо этого используйте Swing Timer для управления анимацией.
...