📄 roadgui.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;
class RoadGui extends JFrame {
private SimpleJxtaApp myAgent;
private JTextField titleField, priceField;
public JApplet signalroad;
RoadGui(SimpleJxtaApp a) {
super("人工交通系统(中科院复杂系统与智能科学实验室)");//a.getLocalName());
myAgent = a;
JPanel p = new JPanel();
p.setLayout(new GridLayout(20,2));
p.add(new JLabel("车辆数:"));
titleField = new JTextField(5);
p.add(titleField);
p.add(new JLabel("相位数:"));
priceField = new JTextField(5);
p.add(priceField);
getContentPane().add(p, BorderLayout.EAST);
JButton addButton = new JButton("开始");
p = new JPanel();
p.add(addButton);
getContentPane().add(p, BorderLayout.SOUTH);
signalroad = new signalroads(myAgent);
setResizable(false);
}
public void show() {
pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int centerX = (int)screenSize.getWidth() / 2;
int centerY = (int)screenSize.getHeight() / 2;
setLocation(100 , 100);
setSize(new Dimension(3*centerX/2,3*centerY/2));
//JApplet signalroad = new signalroads(myAgent);
getContentPane().add(this.signalroad,BorderLayout.CENTER);
super.show();
signalroad.start();
}
public void stoppaint(int x,int y)
{
Graphics g=signalroad.getGraphics();
g.setColor(Color.MAGENTA);
g.fillRect(x,y,10,10);
}
public void carpaint(int x,int y,int direct,int runstate,int v,Color clour) //画车函数
{
Graphics g=signalroad.getGraphics();
int m;
switch (direct)
{
case 1: //east-west
{
if (runstate==0) //直行
{
g.setColor(clour);//Color.BLUE
g.fillRect(x,y,10,10);
if (x<690)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x+10,y,m,10);
}
}
if (x<10)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==1) //左转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x>=375)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x+10,y,m,10);
}
}
else if(x==335)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y-m,10,m);
}
}
else{
g.clearRect(x+5,y-5,5,5);
g.clearRect(x+10,y-5,5,10);
}
if((x==335)&&(y==275)){
//g.clearRect(x+5,y-5,5,5);
g.clearRect(x+10,y-5,5,10);
}
break;
}
else if (runstate==2) //右转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
for (m=1;m<v+1;m++)
{
g.clearRect(x+10,y,m,10);
}
break;
}
else if (runstate==3) //左换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x<690)
{
if (y==215)
{
g.clearRect(x+10,215,5,10);
}
else if (y==227)
{
g.clearRect(x,225,10,2);
}
else
{
g.clearRect(x+1,y-2,10,2);
g.clearRect(x+10,y,1,8);
}
}
if (x<10)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==4) //右换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x<690)
{
if (y==235)
{
g.clearRect(x+10,235,5,10);
}
else if (y==223)
{
g.clearRect(x,y+10,10,2);
}
else
{
g.clearRect(x+1,y+10,10,2);
g.clearRect(x+10,y+2,1,8);
}
}
if (x<10)
g.clearRect(x,y,10,10);
break;
}
else //停车
{
break;
}
}//end case fromeast
case 2: //south->north
{
if (runstate==0) //直行
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y<490)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y+10,10,m);
}
}
if (y<10)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==1) //左转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y>=275)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y+10,10,m);
}
}
else if(y==235)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x+10,y,m,10);
}
}
else{
g.clearRect(x+5,y+10,5,5);
g.clearRect(x+10,y+5,5,10);
}
if((y==235)&&(x==315)){
//g.clearRect(x+5,y-5,5,5);
g.clearRect(x+5,y+10,10,5);
}
break;
}
else if (runstate==2) //右转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
for (m=1;m<v+1;m++)
{
g.clearRect(x,y+10,10,m);
}
break;
}
else if (runstate==3) //左换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y<490)
{
if (x==375)
{
g.clearRect(x,y+10,10,5);
}
else if (x==363)
{
g.clearRect(x+10,y,2,10);
}
else
{
g.clearRect(x+2,y+10,10,1);
g.clearRect(x+10,y+1,2,9);
}
}
if (y<10)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==4) //右换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y<490)
{
if (x==355)
{
g.clearRect(x,y+10,10,5);
}
else if (x==367)
{
g.clearRect(x-2,y,2,10);
}
else
{
g.clearRect(x-2,y+10,10,1);
g.clearRect(x-2,y+1,2,9);
}
}
if (x<10)
g.clearRect(x,y,10,10);
break;
}
else //停车
{
break;
}
}//end case FromSouth
case 3: //west-east
{
if (runstate==0) //直行
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x>v)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x-m,y,m,10);
}
}
if (x>=680)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==1) //左转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x<=315)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x-m,y,m,10);
}
}
else if(x==355)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y+10,10,m);
}
}
else{
g.clearRect(x-5,y+5,5,5);
g.clearRect(x-5,y+10,10,5);
}
if((x==355)&&(y==215)){
//g.clearRect(x+5,y-5,5,5);
g.clearRect(x-5,y+5,5,10);
}
break;
}
else if (runstate==2) //右转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
for (m=1;m<v+1;m++)
{
g.clearRect(x-m,y,m,10);
}
break;
}
else if (runstate==3) //左换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x>10)
{
if (y==275)
{
g.clearRect(x-5,275,5,10);
}
else if (y==263)
{
g.clearRect(x,y+10,10,2);
}
else
{
g.clearRect(x-1,y+2,1,10);
g.clearRect(x,y+10,9,2);
}
}
if (x>=690)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==4) //右换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (x>10)
{
if (y==255)
{
g.clearRect(x-5,235,5,10);
}
else if (y==267)
{
g.clearRect(x,y-2,10,2);
}
else
{
g.clearRect(x-1,y-2,10,2);
g.clearRect(x-1,y,1,8);
}
}
if (x>=690)
g.clearRect(x,y,10,10);
break;
}
else //停车
{
break;
}
}//end case fromWest
case 4: //north->south
{
if (runstate==0) //直行
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y>v)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y-m,10,m);
}
}
if (y>=480)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==1) //左转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y<=215)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x,y-m,10,m);
}
}
else if(y==255)
{
for (m=1;m<v+1;m++)
{
g.clearRect(x-m,y,m,10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -