Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将程序中的变量分配给Swing中的图标?_Java_Swing_Netbeans_Simulation - Fatal编程技术网

Java 如何将程序中的变量分配给Swing中的图标?

Java 如何将程序中的变量分配给Swing中的图标?,java,swing,netbeans,simulation,Java,Swing,Netbeans,Simulation,我正在用Java在Netbeans中编写一个模拟,实际的非图形化编码大部分已经完成。然而,我想做一个图形化的实现,在这里我使用图标来表示在模拟中变化的变量 模拟模拟卡车在道路上行驶,我想要一个图标来代表每辆卡车。代码将每辆卡车和每条道路显示为一个单独的对象,每个对象都有自己的属性,但在图形化实现中只需要对少数属性进行建模。例如,每辆卡车的位置是道路的一个属性,显示卡车沿着道路行驶了多远 在图形界面中对此建模的最简单方法是什么?我假设我需要为Netbeans中的图形结构指定一个图标,然后让它根据道

我正在用Java在Netbeans中编写一个模拟,实际的非图形化编码大部分已经完成。然而,我想做一个图形化的实现,在这里我使用图标来表示在模拟中变化的变量

模拟模拟卡车在道路上行驶,我想要一个图标来代表每辆卡车。代码将每辆卡车和每条道路显示为一个单独的对象,每个对象都有自己的属性,但在图形化实现中只需要对少数属性进行建模。例如,每辆卡车的位置是道路的一个属性,显示卡车沿着道路行驶了多远

在图形界面中对此建模的最简单方法是什么?我假设我需要为Netbeans中的图形结构指定一个图标,然后让它根据道路的距离属性进行自我更新,但我不知道如何实现这一点


任何帮助都将不胜感激。

使用图形类,您可以绘制道路、汽车(使用图像),并使用摆动计时器设置动画

要绘制汽车,可以使用在屏幕上绘制图像

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 = 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中的某个位置执行if语句,告诉计时器何时停止

Javadocs和教程


| | |

你在找动画吗?这“每辆卡车的位置都是道路的一个属性”到底意味着什么?好吧,动画会很好,但是如果需要太多额外的编码,只需从一个地方跳到另一个地方就可以了。你对Swing有多少经验?您知道如何使用
Graphics
类吗?每条道路都初始化为我创建的自定义对象。车辆在道路上行驶的距离是存储在该对象中的一个变量。非常感谢。我会试试这个,但它看起来正是我想要的。而且,我注意到你还没有接受任何答案。作为将来的参考,如果答案有助于你解决问题,你应该接受它。这样一来,任何未来的读者都会知道哪些答案最有帮助。(投票箭头下方的复选标记)好的,谢谢。我对StackOverflow还比较陌生,所以每一点都有帮助。@Martin:我们可以看到一个相关的例子。