62,620
社区成员
发帖
与我相关
我的任务
分享

public void paintComponent(Graphics g) {
//System.out.println("senderX:"+senderX);
//System.out.println("receiverX:"+receiverX);
Graphics2D g2 = (Graphics2D) g;
if (!begin) return;//鼠标点击之后begin=true
super.paintComponent(g);
g.setColor(Color.BLACK);//画边框
//g2.drawLine(300, 0, 300, 1000);
g2.drawRect(505, 105, 600, 550);
if (Start >= MAXTIME) {
lblTime.setText("END!!");
}
Start += 1;
lblTime.setText(timeStr(Start));
Image icar = getToolkit().getImage("blude_car2.gif");//读取图片
Image Sroad=getToolkit().getImage("road2.PNG");//读取图片
Image Hroad=getToolkit().getImage("road1.PNG");//读取图片
//BufferedImage bufferedImage=(BufferedImage) getToolkit().getImage("blude_car2.gif");
//System.out.println("sy:"+sy);
//System.out.println("nsy:"+nsy);
for (int i = 0; i < Open.carnum; i++) //小车运动
{
if (getSx()[i] < getEx()[i])//小车横向移动
{
// System.out.println("************");
getSx()[i] += ((double)getdelay1()[i] / 1000);//速度除以1000
//System.out.println(getdelay1()[i] / 10);
// Senderx[i] = getSx()[i];
}
if (getSy()[i] < getEy()[i]) //小车纵向移动
{
getSy()[i] += ((double)getdelay1()[i] / 1000);
//System.out.println((double)getdelay1()[i] / 1000);
//System.out.println(getSy()[i] );
}
if (nsx[i]< nex[i])//小车横向移动
{
g.drawImage(Hroad, 0, (int)ney[i],50, 1000, null);
}
if (nsy[i] < ney[i]) //小车纵向移动
{
g.drawImage(Sroad, (int)nex[i],0,50, 1000, null);
}
File f = new File("blude_car2.gif");
try //小车图片移动,坐标的数据为浮点型
{
BufferedImage image = ImageIO.read(f);
g2.drawRenderedImage(image, AffineTransform.getTranslateInstance((double)getSx()[i], (double)getSy()[i]));
//g2.drawRenderedImage(image, AffineTransform.getTranslateInstance(10.2, 10.8));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//g2.setColor(Color.YELLOW);
// g.drawImage(icar, getSx()[i], getSy()[i], 40, 30, null);
// g.drawImage(map, 350, 5, 100, 100, null);
//Rectangle2D rect = new Rectangle2D.Double(getSx()[i], getSy()[i], 40, 30);
//g2.draw(rect);
//Image2D im=new Image2D(1,1,2,2);
//g2.setStroke(bs[(index++) % 6]);//设置画刷
//AffineTransform transform = AffineTransform.getTranslateInstance(100,200); //先获得偏移
//transform.scale(0.5, 0.5); // 在此基础上,长宽均缩小至50%
//g2.drawRenderedImage((RenderedImage) icar, transform);
//g2.drawRenderedImage(buffer1, AffineTransform.getTranslateInstance(100.0, 200.0));
}
g.setColor(Color.RED);
//System.out.println(Open.senderID+" "+Open.receiverID);
if(isStart)
{
//x=senderX;
//System.out.println("senderx:"+senderX);
//System.out.println("receiverx:"+receiverX);
g.setColor(Color.BLUE);
//g.fillRect(x, y, 15,15);
//Rectangle2D.Float rect=new Rectangle2D.Float(x,y,10F,10F);
//g2.draw(rect);
//g.fillRect(x, y, 10,10);
//System.out.println(sending);
for(int i=0;i<Open.sno;i++)//发送的包的信息
{
senderX=(int)sx[(int)Double.parseDouble(Open.sender[i][2])];
senderY=(int)sy[(int)Double.parseDouble(Open.sender[i][2])];
senderID=(int)Double.parseDouble(Open.sender[i][2]);
//g.fillRect(x, y, 10,10);
//x=senderX;
//System.out.println(senderX+" "+Open.sender[i][2]+" "+senderY+"--------"+x+" "+y);
//System.out.println(Open.sender[i][6]);
if(Open.receiver2[i][0].equals("r"))
{
//System.out.println(i);
//System.out.println(receiverX+" "+Open.receiver2[i][2]+" "+receiverY+"--------"+x+" "+y);
receiverID=(int)Double.parseDouble(Open.receiver2[i][2]);
receiverX = (int)sx[(int)Double.parseDouble(Open.receiver2[i][2])];
receiverY = (int)sy[(int)Double.parseDouble(Open.receiver2[i][2])] ;
if((Double.parseDouble(timeStr(Start))>=Open.STIME[i])&&(Double.parseDouble(timeStr(Start))<=Open.RDTIME[i]))
{
System.out.println(Open.receiver2[i][6]);
g.setColor(Color.BLUE);
g.fillRect(x, y, 15,15);
//g.drawLine(senderX+10, senderY+10, receiverX+10, receiverY+10);
//Drawstring(g,senderX,senderY,receiverX,receiverY,Open.sender[i][5]);
// g2.drawString(Open.sender[i][5],(senderX+(senderX+receiverX)/2)/2,(senderY+(senderY+receiverY)/2)/2);
// g2.drawString(Open.sender[i][5],((senderX+receiverX)/2+receiverX)/2,(receiverY+(senderY+receiverY)/2)/2);
g.setColor(Color.RED);
g.drawString(Open.sender[i][5],x,y-5);
g.drawString(Open.sender[i][6],x,y+25);
g.setColor(Color.YELLOW);
g2.drawString("S",senderX+12,senderY-5);
g2.drawString("R",receiverX+12,receiverY+55);
}
}
// if((Double.parseDouble(timeStr(Start))==Open.STIME[i]))
// {
// packetID.add((int)Double.parseDouble(Open.sender[i][5]));
// }
// if((Double.parseDouble(timeStr(Start))==Open.RDTIME[i]))
// {
// packetID.remove((int)Double.parseDouble(Open.sender[i][5]));
// }
if(Open.receiver2[i][0].equals("D"))
{
receiverID=(int)Double.parseDouble(Open.sender[i][2]);
receiverX=(int)sx[(int)Double.parseDouble(Open.sender[i][2])];
receiverY=(int)sy[(int)Double.parseDouble(Open.sender[i][2])];
//continue;
}
//System.out.println(i+" :"+senderID+" "+receiverID+" "+Open.receiver2[i][0]);
if(receiverX>=senderX)
{
x +=80;
if((x<=senderX+(receiverX-senderX)/5)&&(x>=senderX))
{
//y=receiverY+(senderY-receiverY)/5;
y=senderY;
//System.out.println("1 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
}
if((x<=senderX+2*(receiverX-senderX)/5)&&x>senderX+(receiverX-senderX)/5)
{
//y=receiverY+2*(senderY-receiverY)/5;
y=senderY+(receiverY-senderY)/4;
//System.out.println("2 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
}
if((x<=senderX+3*(receiverX-senderX)/5)&&x>senderX+2*(receiverX-senderX)/5)
{
//y=receiverY+3*(senderY-receiverY)/5;
y=senderY+2*(receiverY-senderY)/4;
//System.out.println("3 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
}
if((x<=senderX+4*(receiverX-senderX)/5)&&(x>senderX+3*(receiverX-senderX)/5))
{
//y=receiverY+4*(senderY-receiverY)/5;
y=senderY+3*(receiverY-senderY)/4;
//System.out.println("4 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
}
if((x<=receiverX)&&(x>senderX+4*(receiverX-senderX)/5))
{
y=receiverY;
//System.out.println("5 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
}
if(x > receiverX) {
x =senderX ;
y=senderY;
//System.out.println("6 senderX="+senderX+"------"+"receiverX="+receiverX+"------"+"senderY="+senderY+"------"+"receiverY="+receiverY+"x="+x+"------"+"y="+y);
//x=1;
}
}
//if((receiverX< senderX)&&(receiverY<senderY))
//if(receiverY<senderY)
if(receiverX< senderX)
{
x -= 50;
if((x<=receiverX+(senderX-receiverX)/5)&&(x>receiverX))
{
//y=receiverY+(senderY-receiverY)/5;
y=receiverY;
}
if((x<=receiverX+2*(senderX-receiverX)/5)&&x>receiverX+(senderX-receiverX)/5)
{
//y=receiverY+2*(senderY-receiverY)/5;
y=receiverY+(senderY-receiverY)/4;
}
if((x<=receiverX+3*(senderX-receiverX)/5)&&x>receiverX+2*(senderX-receiverX)/5)
{
//y=receiverY+3*(senderY-receiverY)/5;
y=receiverY+2*(senderY-receiverY)/4;
}
if((x<=receiverX+4*(senderX-receiverX)/5)&&(x>receiverX+3*(senderX-receiverX)/5))
{
//y=receiverY+4*(senderY-receiverY)/5;
y=receiverY+3*(senderY-receiverY)/4;
}
if((x<=senderX)&&(x>receiverX+4*(senderX-receiverX)/5))
{
y=senderY;
}
if(x < receiverX) {
x =senderX;
y=senderY;
//x=1;
}
}
}
}
/*
if(isStart)
{
//x=senderX;
x=x+10;
g.setColor(Color.RED);
g.fillRect(x, y, 30,15);
}
*/
}
写的有点乱。。public Car()
{
System.out.println("***");
path = new GeneralPath();
path.moveTo(50, 50);
path.lineTo(200, 200);
float[] dash = new float[] { 5, 5 };
for (int i = 0; i < 6; i++) {
bs[i] = new BasicStroke(6.0f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER, 10.0f, dash, i);
}
this.OpenFile=new JButton("Open File");
this.lblTime = new JLabel("Start");
this.lblTime.setFont(new Font("Monospaced", Font.BOLD, 30));
this.lblTime.setHorizontalAlignment(SwingConstants.CENTER);
this.lblTime.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e)//鼠标点击事件
{
begin = true;
lblTime.setText(timeStr(Start));
}
});
add(lblTime);
add(OpenFile);
//setLayout(new BorderLayout());
//add(lblTime, BorderLayout.NORTH);
this.setLayout(null);
lblTime.setBounds(800,20,100,30);
OpenFile.setBounds(600,20,150,30);
timer.start();
}
但是JLabel lbltime就没有这个情况。。