package vehicleMap;import java.awt.AlphaComposite;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.Color;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;/**
* 当需要更新坐标的时候可以利用setPoint(Point point) 方法
* 因为经类继承了JLabel 并覆盖了paint(Graphics g)方法
* 利用 Timer 的 TimerTask 类利用线程的知识 使paint(Graphics g)不停的更新
*
* 另外还有一个问题 就是主JPanel 中添加此实例的问题.. 因为JPanel的布局原因 我每次只能添加一个实例
* 每次我们所看见的都是最先或最好添加的实例 必需考虑两个或多个实例能同时显示的技术.
*//** 故障显示类 */
public class ShowFailure extends JLabel implements Runnable { /* 故障显示区域 周期 */
protected static final int CYCLE = 3; private static final int delay = 300; /* 此Label的 alpha 值 */
protected static final float alpha = 0.5f; /* 具体坐标点 */
private Point point = new Point(0, 0); /* 所要显示的信息 */
private String message; /* 重绘次数 */
private int count; /* 故障显示区域的大小 */
private int width = 40, height = 40; /* 预留图像处理类 */
private ImageProcess imageControl; /* 重绘开关 */
private boolean opaque; /* 前景颜色 */
private Color color = Color.red; /* 构造子 */
public ShowFailure(Color color) {
this.color = color;
} public ShowFailure() {
super.setSize(width, height);
} public void setPoint(Point nextPoint) {
this.point = nextPoint;
repaint();
} public void setPoint(int x, int y) {
this.point.setLocation(x, y);
} public Point getPoint() {
if (point != null) {
System.out.println("oK");
return point;
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return point;
}
} /** Override of paintChildren - draw Ranctangle */
public void paint(Graphics g) {
((Graphics2D) g).setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, alpha));
this.setForeground(Color.red);
count++; int xVal = (int) getPoint().getX() ;
int yVal = (int) getPoint().getY() ;
System.out.println("xVal is:"+xVal+"yVal is:"+yVal);
if (count % this.CYCLE == 0) {
g.setColor(color);
g.fillRect(xVal, yVal, width, height);
}
} public void run() {
while (true) {
repaint();
try {
Thread.sleep(this.delay);
} catch (InterruptedException ite) {
ite.printStackTrace();
}
}
} /*
* public void start() { runUpdates(delay); }
*/ public void Stop() {
System.out.println("故障处理结束..");
this.setVisible(false);
} public int getCount() {
return this.count;
} public static void main(String[] args) {
JFrame jf = new JFrame("测试代码!");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(800, 600);
jf.setLayout(null);
JPanel jj = (JPanel)jf.getContentPane();
JPanel jp = new JPanel();
jp.setLayout(null);
jp.setOpaque(true);
jp.setSize(800,600);
jj.add(jp);
jf.setVisible(true);
ShowFailure show1 = new ShowFailure(); ShowFailure show = new ShowFailure();
show1.setPoint(new Point(110, 110));
show .setPoint(111,111); //这里的两个值改成10或更小则可以显示但为什么改成111就不行了呢.. 在线等
new Thread(show).start();
new Thread(show1).start();
jp.add(show1);
jp.add(show); }}
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.Color;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;/**
* 当需要更新坐标的时候可以利用setPoint(Point point) 方法
* 因为经类继承了JLabel 并覆盖了paint(Graphics g)方法
* 利用 Timer 的 TimerTask 类利用线程的知识 使paint(Graphics g)不停的更新
*
* 另外还有一个问题 就是主JPanel 中添加此实例的问题.. 因为JPanel的布局原因 我每次只能添加一个实例
* 每次我们所看见的都是最先或最好添加的实例 必需考虑两个或多个实例能同时显示的技术.
*//** 故障显示类 */
public class ShowFailure extends JLabel implements Runnable { /* 故障显示区域 周期 */
protected static final int CYCLE = 3; private static final int delay = 300; /* 此Label的 alpha 值 */
protected static final float alpha = 0.5f; /* 具体坐标点 */
private Point point = new Point(0, 0); /* 所要显示的信息 */
private String message; /* 重绘次数 */
private int count; /* 故障显示区域的大小 */
private int width = 40, height = 40; /* 预留图像处理类 */
private ImageProcess imageControl; /* 重绘开关 */
private boolean opaque; /* 前景颜色 */
private Color color = Color.red; /* 构造子 */
public ShowFailure(Color color) {
this.color = color;
} public ShowFailure() {
super.setSize(width, height);
} public void setPoint(Point nextPoint) {
this.point = nextPoint;
repaint();
} public void setPoint(int x, int y) {
this.point.setLocation(x, y);
} public Point getPoint() {
if (point != null) {
System.out.println("oK");
return point;
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return point;
}
} /** Override of paintChildren - draw Ranctangle */
public void paint(Graphics g) {
((Graphics2D) g).setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, alpha));
this.setForeground(Color.red);
count++; int xVal = (int) getPoint().getX() ;
int yVal = (int) getPoint().getY() ;
System.out.println("xVal is:"+xVal+"yVal is:"+yVal);
if (count % this.CYCLE == 0) {
g.setColor(color);
g.fillRect(xVal, yVal, width, height);
}
} public void run() {
while (true) {
repaint();
try {
Thread.sleep(this.delay);
} catch (InterruptedException ite) {
ite.printStackTrace();
}
}
} /*
* public void start() { runUpdates(delay); }
*/ public void Stop() {
System.out.println("故障处理结束..");
this.setVisible(false);
} public int getCount() {
return this.count;
} public static void main(String[] args) {
JFrame jf = new JFrame("测试代码!");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(800, 600);
jf.setLayout(null);
JPanel jj = (JPanel)jf.getContentPane();
JPanel jp = new JPanel();
jp.setLayout(null);
jp.setOpaque(true);
jp.setSize(800,600);
jj.add(jp);
jf.setVisible(true);
ShowFailure show1 = new ShowFailure(); ShowFailure show = new ShowFailure();
show1.setPoint(new Point(110, 110));
show .setPoint(111,111); //这里的两个值改成10或更小则可以显示但为什么改成111就不行了呢.. 在线等
new Thread(show).start();
new Thread(show1).start();
jp.add(show1);
jp.add(show); }}
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.image.ImageProducer;
import java.awt.Color;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;/**
* 当需要更新坐标的时候可以利用setPoint(Point point) 方法
* 因为经类继承了JLabel 并覆盖了paint(Graphics g)方法
* 利用 Timer 的 TimerTask 类利用线程的知识 使paint(Graphics g)不停的更新
*
* 另外还有一个问题 就是主JPanel 中添加此实例的问题.. 因为JPanel的布局原因 我每次只能添加一个实例
* 每次我们所看见的都是最先或最好添加的实例 必需考虑两个或多个实例能同时显示的技术.
*//** 故障显示类 */
public class ShowFailure extends JLabel implements Runnable {/* 故障显示区域 周期 */
protected static final int CYCLE = 3;private static final int delay = 300;/* 此Label的 alpha 值 */
protected static final float alpha = 0.5f;/* 具体坐标点 */
private Point point = new Point(0, 0);/* 所要显示的信息 */
private String message;/* 重绘次数 */
private int count;/* 故障显示区域的大小 */
private int width = 340, height = 340;/* 预留图像处理类 */
private ImageProducer imageControl;/* 重绘开关 */
private boolean opaque;/* 前景颜色 */
private Color color = Color.red;/* 构造子 */
public ShowFailure(Color color) {
this.color = color;
}public ShowFailure() {
super.setSize(width, height);
}public void setPoint(Point nextPoint) {
this.point = nextPoint;
repaint();
}public void setPoint(int x, int y) {
this.point.setLocation(x, y);
}public Point getPoint() {
if (point != null) {
System.out.println("oK");
return point;
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return point;
}
}/** Override of paintChildren - draw Ranctangle */
public void paint(Graphics g) {
((Graphics2D) g).setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, alpha));
this.setForeground(Color.red);
count++;int xVal = (int) getPoint().getX() ;
int yVal = (int) getPoint().getY() ;
System.out.println("xVal is:"+xVal+"yVal is:"+yVal);
if (count % this.CYCLE == 0) {
g.setColor(color);
g.fillRect(xVal, yVal, width, height);
}
}public void run() {
while (true) {
repaint();
try {
Thread.sleep(this.delay);
} catch (InterruptedException ite) {
ite.printStackTrace();
}
}
}/*
* public void start() { runUpdates(delay); }
*/public void Stop() {
System.out.println("故障处理结束..");
this.setVisible(false);
}public int getCount() {
return this.count;
}public static void main(String[] args) {
JFrame jf = new JFrame("测试代码!");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(800, 600);
jf.setLayout(null);
JPanel jj = (JPanel)jf.getContentPane();JPanel jp = new JPanel();
jp.setLayout(null);
jp.setOpaque(true);
jp.setSize(800,600);
jj.add(jp);jf.setVisible(true);
ShowFailure show1 = new ShowFailure();ShowFailure show = new ShowFailure();
show1.setPoint(new Point(110, 110));
show .setPoint(111,111);
new Thread(show).start();
new Thread(show1).start();
jp.add(show1);
jp.add(show);}}