我正在用Netbeans编写Java模拟,实际的非图形编码主要完成。但是,我想做一个图形实现,我使用图标来表示模拟中变化的变量。
模拟模拟卡车沿着道路行驶,我想要一个代表每辆卡车的图标。代码将每辆卡车和每条道路显示为一个单独的对象,每个对象都有自己的属性,但只有少数属性需要在图形实现中建模。例如,每辆卡车的位置是道路的属性,显示卡车沿着道路行驶了多远。
在图形界面中对此进行建模的最简单方法是什么?我假设我需要在Netbeans中为图形结构指定一个图标,然后根据道路的距离属性对其进行更新,但我不知道如何处理它。
任何帮助将不胜感激。
答案 0 :(得分:3)
使用Graphics类,您可以使用Swing Timer绘制道路,汽车(使用图像)和动画。
要绘制汽车,您可以使用将图像绘制到屏幕上
public class Map extends JPanel {
BufferedImage car1;
BufferedImage car2;
BufferedImage car3;
public Map(){
try {
car1 = ImageIO.read(getClass().getResource("somecarimage.png"));
car3 = ImageIO.read(getClass().getResource("somecarimage.png"));
car3 = ImageIO.read(getClass().getResource("somecarimage.png"));
}
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
// use the drawImage method
g.drawImage(car1, xLocation, yLocation, height, width, this);
g.drawImage(car2, xLocation, yLocation, height, width, this);
g.drawImage(car2, xLocation, yLocation, height, width, this);
}
}
如你所见,我在屏幕上画了三辆车。您可以将您的类与数据一起用作xLocation
和yLocation
如果您想为汽车设置动画,可以使用Swing Timer
Timer timer = new Timer(100, new ActionListener(){ // causes an action every 100 millis
public void actionPerformed(ActionEvent e){
// change the xLocation and yLocation of each car
car1.xLocation += 5;
car1.yLocation += 5;
car2.xLocation += 5;
car2.yLocation += 5;
car3.xLocation += 5;
car3.yLocation += 5;
repaint();
}
});
timer.start();
你可以在actionPerformed中的某处告诉定时器何时停止。
Javadocs和教程
Timer javadoc | Timer tutorial | Graphics javadoc | Graphics tutorial