Java多线程与GUI(一种流量模拟器)
我需要为一个狭窄的桥实现一个解决方案,而且我对java线程和gui是新手。 我有三条路和一座桥(有两条车道)。每条路应该随机创建20辆车,并且应该根据其道路上的灯光通过桥 但首先,我只想解决一个简单的问题,那就是如何用线程在这条路上移动汽车?(睡眠1秒,移动一点)。 我是这样想的: 我已经用简单的PaintComponent函数覆盖创建了道路(我不确定它是否也会这样实现)。 创建了实现runnable的road类和vehicle类。 我创建了一个由20辆道路级车辆组成的阵列,并卡在了这里 我应该如何将其添加到JPanel并每1秒将其向右移动? 因为我有C家族的背景,所以我在如何实现这个问题上完全错了吗 我的代码: 公共级窄桥{Java多线程与GUI(一种流量模拟器),java,multithreading,user-interface,Java,Multithreading,User Interface,我需要为一个狭窄的桥实现一个解决方案,而且我对java线程和gui是新手。 我有三条路和一座桥(有两条车道)。每条路应该随机创建20辆车,并且应该根据其道路上的灯光通过桥 但首先,我只想解决一个简单的问题,那就是如何用线程在这条路上移动汽车?(睡眠1秒,移动一点)。 我是这样想的: 我已经用简单的PaintComponent函数覆盖创建了道路(我不确定它是否也会这样实现)。 创建了实现runnable的road类和vehicle类。 我创建了一个由20辆道路级车辆组成的阵列,并卡在了这里 我应该
public static void main(String[] args) {
JFrame myFrame = new JFrame();
PanelSetter newPanel = new PanelSetter();
myFrame.add(newPanel);
myFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
myFrame.setSize(600, 600);
myFrame.setTitle("Narrow Bridge Problem ");
myFrame.setLocationRelativeTo(null);//To centralize the jframe.
myFrame.setVisible(true);
}
}
类PanelSetter扩展了JPanel{
public Road Road1 = new Road(true);
public Road Road2 = new Road(false);
public Road Road3 = new Road(false);
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
//Fixed Roads Drawing.
g.setColor(Color.BLACK);
g.drawLine(50, 100, 200, 100);
g.drawLine(50, 130, 200, 130);
g.setColor(Color.BLACK);
g.drawLine(50, 210, 200, 210);
g.drawLine(50, 240, 200, 240);
g.setColor(Color.BLACK);
g.drawLine(50, 320, 200, 320);
g.drawLine(50, 350, 200, 350);
//Road 1 Light.
if (Road1.getLight()) {
g.setColor(Color.GREEN);
g.fillOval(180, 70, 20, 20);
} else {
g.setColor(Color.RED);
g.fillOval(180, 70, 20, 20);
}
//Road 2 Light.
if (Road2.getLight()) {
g.setColor(Color.GREEN);
g.fillOval(180, 180, 20, 20);
} else {
g.setColor(Color.RED);
g.fillOval(180, 180, 20, 20);
}
//Road 3 Light.
if (Road3.getLight()) {
g.setColor(Color.GREEN);
g.fillOval(180, 290, 20, 20);
} else {
g.setColor(Color.RED);
g.fillOval(180, 290, 20, 20);
}
}
}
Road只是一个简单的类,它只有布尔光,我尝试的是vehicle[]vehicles=new vehicle[20]。最后我在Java小程序的帮助下解决了我的问题。
我可以将小程序作为参数传递,并调用它的paint()函数和更新屏幕 这里的路是什么?粘贴你的class@Shriram我添加了它的内容,但它只不过是一个标准的基本类。谢谢你的帮助。嗨,你能分享一下代码吗?嗨@Steven94,我很久以前就写过了,所以很难理解。但是试试看。在这里: