package Frame;
|
import java.awt.BasicStroke;
|
import java.awt.BorderLayout;
|
import java.awt.Canvas;
|
import java.awt.Color;
|
import java.awt.Container;
|
import java.awt.Cursor;
|
import java.awt.Font;
|
import java.awt.Graphics;
|
import java.awt.Graphics2D;
|
import java.awt.Image;
|
import java.awt.Point;
|
import java.awt.Stroke;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemListener;
|
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseListener;
|
import java.awt.event.MouseMotionListener;
|
import java.awt.event.MouseWheelEvent;
|
import java.awt.event.MouseWheelListener;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Vector;
|
import javax.swing.ButtonGroup;
|
import javax.swing.ComboBoxModel;
|
import javax.swing.DefaultComboBoxModel;
|
import javax.swing.ImageIcon;
|
import javax.swing.JButton;
|
import javax.swing.JComboBox;
|
import javax.swing.JMenuItem;
|
import javax.swing.JPanel;
|
import javax.swing.JPopupMenu;
|
import javax.swing.JRadioButton;
|
import javax.swing.JTextField;
|
import ColorAndFont.UIColor;
|
import ColorAndFont.buttonTitle;
|
import DataBase.DatabaseManagement;
|
import Judge.JugeNumber;
|
import Method.GetNowTime;
|
import Method.Map_suo_fang;
|
import PbuliClass.GetDate;
|
import PbuliClass.HistoryTrack;
|
import PbuliClass.JButtonModel;
|
import PbuliClass.JlableModel;
|
import PbuliClass.ShowMessage;
|
import PbuliClass.Systems;
|
import PbuliClass.jinternalFrame;
|
import person.person_Dell;
|
import tag.Tag_Dell;
|
import tbDataModel.TbMap;
|
import tbDataModel_Dell.FontChoose;
|
import tbDataModel_Dell.Map_Dell;
|
|
/**¸ÃÀàÓÃÓÚÀúÊ·¹ì¼£»Ø·Å*/
|
@SuppressWarnings("rawtypes")
|
public class TrackPlay extends jinternalFrame implements Runnable {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
JPanel leftJpanel=null;//×ó²àÃæ°å
|
JTextField searchFileld=null;//ËÑË÷Îı¾¿ò
|
JButtonModel search=null;//±£´æ
|
JButtonModel jbt_tip=null;//Ìáʾ
|
JlableModel chooseMap;//Ñ¡Ôñͼ²ã
|
JlableModel startTime=null; //Ñ¡Ôñ¿ªÊ¼Ê±¼ä
|
JButton startButton=null;//¿ªÊ¼Ê±¼äÑ¡Ôñ°´Å¥
|
JlableModel stopTime=null; //Ñ¡Ôñ½áÊøÊ±¼ä
|
JButton stopButton=null;//½áÊøÊ±¼äÑ¡Ôñ°´Å¥
|
JTextField time_interval=null;//µ¥ÐÐÎı¾¿òÓÃÓÚÑ¡Ôñʱ¼ä¶Î
|
JTextField serchFile=null;//ÈËÔ±Îı¾¿ò
|
Iterator iterator;
|
JComboBox<String > comboBox=null;//Ñ¡Ôñͼ²ãÏÂÀ¿ò
|
JComboBox<String > play_speed=null;//Ñ¡Ôñ²¥·ÅËÙ¶ÈÏÂÀ¿ò
|
String imageName=null;//ͼƬÃû³Æ
|
String imageAdress=null;//ͼƬµØÖ·
|
Vector<String> row=null;//µØÍ¼Ãû³ÆµÄ¼¯ºÏ
|
Mycanvas mycanvas=null;
|
Image image=null;//µØÍ¼
|
Image tagimage=new ImageIcon("image/targeticon/default.png").getImage();
|
JTextField zuobiao=null;//Êó±êµÄÊµÊ±×ø±ê
|
String zuobiaoText;//¹â±êµãµÄ
|
ButtonGroup btgroup=null;//ÉêÃ÷°´Å¥×é
|
JRadioButton time30=null;//30·ÖÖÓ
|
JRadioButton time60=null;//60·ÖÖÓ
|
|
int width;
|
int height;
|
int new_width;//ͼƬµÄ¿í
|
int new_height;//ͼƬµÄ¸ß
|
double map_true_width;//µØÍ¼Êµ¼Ê³¤¶È
|
double map_true_height;//µØÍ¼Êµ¼Ê¸ß¶È
|
double x_bi;//ͼƬµÄxÏñËØµãºÍʵ¼Ê³¤µÄ±ÈÖµ
|
double y_bi;//ͼƬµÄyÏñËØµãºÍʵ¼Ê¿íµÄ±ÈÖµ
|
int x0;//ͼƬÆðµã×ø±êx
|
int y0;//ͼƬÆðµã×ø±êy
|
int posx;//ÀúÊ·¹ì¼£X
|
int posy;//ÀúÊ·¹ì¼£y
|
Color color;
|
Stroke stroke;//ÉèÖû±Ê
|
TbMap tbmap;//µØÍ¼¶ÔÏó
|
boolean play=false;
|
String tag_id;//±êÇ©ID
|
int sulv=1000 ;//²¥·ÅËÙÂÊ
|
int[] x_line;
|
int[] y_line;
|
int[] n ;//¶à±ßÐεãµÄÊýÁ¿
|
List<HistoryTrack> history_tag_vector;//ÀúÊ·¹ì¼£¶ÔÏóµÄ¼¯ºÏ
|
String floor;//µØÍ¼ËùÔڵIJã
|
JButtonModel zan_ting=null;//ÔÝÍ£°´Å¥
|
JButtonModel ji_xu=null;//¼ÌÐø°´Å¥
|
static boolean bo_fang=true;//²¥·Å
|
Iterator<HistoryTrack> iterator2;
|
String selecteFloor;//±»Ñ¡ÖеÄͼ²ã
|
int x_x0;//µØÍ¼x·½ÏòµÄÆ«ÒÆÁ¿
|
int y_y0;//µØÍ¼Y·½ÏòµÄÆ«ÒÆÁ¿
|
double bi=1;//ͼƬËõ·Å±ÈÀý
|
int countnum=200;
|
Point origin;
|
int orix;
|
int oriy;
|
int rox;
|
int roy;
|
boolean dian=false;
|
boolean title=false;
|
Image ImageBuffer = null;
|
Graphics GraImage = null;
|
HistoryTrack histrack=null;
|
String tagid;
|
String tag_name="δ°ó¶¨";
|
HistoryTrack histc;
|
int framey;//µ±Ç°Ãæ°å¸ß¶È
|
int framex;//µ±Ç°Ãæ°åµÄ¿í¶È
|
String time="";
|
int size=0;
|
static int falstchoose=0;
|
Color green;
|
int dian_num=0;
|
/**¹¹Ôì´úÂë¿éÓÃÓÚ³õʼ»¯±äÁ¿*/
|
{
|
stroke=new BasicStroke(3);//ÉèÖû±Ê
|
color=Color.red;
|
green=new Color(50,205,50,200);
|
}
|
|
|
public TrackPlay() {
|
if(Map_Dell.get_map("0") !=null) {//Èç¹ûµØÍ¼¶ÔÏó²»Îª¿ÕÔòÔËÐÐ
|
tbmap=Map_Dell.get_map("0") ;
|
imageAdress="image/mapfile/"+tbmap.getMapname();//³õʼ»¯µØÍ¼µØÖ·Ä¬ÈϼÓÔØ0²ãµØÍ¼
|
selecteFloor=tbmap.getFloor();
|
image=new ImageIcon(imageAdress).getImage();//»ñÈ¡µØÍ¼
|
map_true_width=tbmap.getX_Truelength();//µØÍ¼X·½Ïòʵ³¤
|
map_true_height=tbmap.getY_Truewidth();//µØÍ¼Y·½Ïòʵ³¤
|
width=image.getWidth(this);//ͼƬxÏñËØ
|
height=image.getHeight(this);//ͼyÏñËØ
|
x_x0=tbmap.getX0_length();
|
y_y0=tbmap.getY0_width();
|
new_width=width;
|
new_height=height;
|
x0=0;
|
y0=0;
|
}
|
if (Map_Dell.getMap_vector().size()==0){
|
ShowMessage.zidingyi_24("µØÍ¼²»´æÔÚ,ÇëÏÈÌí¼ÓµØÍ¼");
|
this.dispose();
|
return;
|
}
|
|
x_bi=map_true_width/new_width;
|
y_bi=map_true_height/new_height;
|
histc=new HistoryTrack();
|
Container rq=getContentPane();//»ñÈ¡ÈÝÆ÷
|
rq.setLayout(new BorderLayout());
|
rq.setBackground(Color.white);
|
mycanvas=new Mycanvas();//³õʼ»¯»æÍ¼Ãæ°å¶ÔÏó
|
String title="ÀúÊ·¹ì¼£»Ø·Å";
|
if(Systems.sys().getLanguage().equals("English")) {
|
title="Historical track playback";
|
}
|
this.setTitle(title);
|
this.setFrameIcon(new ImageIcon("image/icon/guijiicon.png"));//ÉèÖô°Ìåͼ±ê
|
rq.add(getLeftJpanel(),BorderLayout.WEST);
|
rq.add(mycanvas,BorderLayout.CENTER);
|
}
|
|
|
|
/**»ñÈ¡±±²¿Ãæ°å*/
|
public JPanel getLeftJpanel() {
|
if(leftJpanel==null) {
|
JlableModel name_and_text=new JlableModel();
|
name_and_text.setText("ÊäÈëÐÕÃû»òID²éѯ:");
|
JlableModel bo_fang_su_du=new JlableModel();
|
bo_fang_su_du.setText("²¥·ÅËÙ¶È:");
|
leftJpanel=new JPanel(new BorderLayout());
|
JlableModel ksxz=new JlableModel("¿ìËÙÑ¡Ôñ");
|
JPanel mb1=new JPanel();
|
getBtgroup();//³õʼ»¯
|
mb1.add(getTime30());
|
mb1.add(getTime60());
|
mb1.add(ksxz);
|
int x=20;
|
int y=15;
|
int h=25;
|
int g=h+15;
|
mb1.setLayout(null);
|
getChooseMap().setBounds(x,y,70, h);
|
getComboBox().setBounds(x+70,y,120,h);
|
|
//¿ìËÙÑ¡Ôñ²¥·Åʱ¼ä
|
ksxz.setBounds(x,y+g,70,h);
|
time30.setBounds(x+70, y+g,60,h);
|
time60.setBounds(x+130, y+g,60,h);
|
|
getStartTime().setBounds(x,y+2*g, 100,h);//¿ªÊ¼Ê±¼äλÖÃ
|
getStartButton().setBounds(x,y+3*g, 180,h);//¿ªÊ¼Ê±¼äÑ¡Ôñ°´Å¥
|
getStoptTime().setBounds(x, y+4*g, 100,h);//½áÊøÊ±¼äλÖÃ
|
getStopButton().setBounds(x,y+5*g, 180,h);//½áÊøÊ±¼äÑ¡Ôñ°´Å¥
|
bo_fang_su_du.setBounds(x,y+6*g, 70,h);//Ñ¡Ôñ²¥·ÅËÙ¶È
|
getPlay_speed().setBounds(x+70,y+6*g, 100,h);//²¥·ÅËÙ¶ÈÑ¡ÔñÏÂÀ¿ò
|
name_and_text.setBounds(x, y+7*g, 180, h);
|
getSerchFile().setBounds(x,y+8*g, 110, h);//ËÑË÷ÊäÈë¿ò
|
getSearch().setBounds(x+110, y+8*g,70, h);//ËÑË÷°´Å¥
|
getJbt_tip().setBounds(x, y+9*g, 180, h);
|
getZan_ting().setBounds(x,y+10*g,70,h);//ÔÝÍ£°´Å¥
|
getJi_xu().setBounds(x+90,y+10*g,70,h);//¼ÌÐø°´Å¥
|
mb1.add(getChooseMap());//Ñ¡Ôñͼ²ã
|
mb1.add(getComboBox());//Ìí¼ÓÏÂÀÁбí¿ò
|
mb1.add(getStartTime());//Ñ¡Ôñ¿ªÊ¼Ê±¼ä
|
mb1.add(getStartButton());//¿ªÊ¼Ê±¼äÑ¡Ôñ°´Å¥
|
mb1.add(getStoptTime());//Ñ¡Ôñ½áÊøÊ±¼ä
|
mb1.add(getStopButton());//Ñ¡Ôñ½áÊøÊ±¼ä°´Å¥
|
mb1.add(bo_fang_su_du);
|
mb1.add(getPlay_speed());//²¥·ÅËÙ¶ÈÑ¡ÔñÏÂÀ¿ò
|
mb1.add(name_and_text);
|
mb1.add(getSerchFile());
|
mb1.add(getSearch());
|
mb1.add(getZan_ting());
|
mb1.add(getJi_xu());
|
mb1.add(jbt_tip);
|
leftJpanel.add(getZuobiao(),BorderLayout.NORTH);
|
leftJpanel.add(mb1,BorderLayout.CENTER);
|
}
|
return leftJpanel;
|
}
|
|
|
|
/**»ñÈ¡ËÑË÷°´Å¥µÄ·½·¨*/
|
public JButtonModel getSearch() {
|
if(search==null){
|
search=new JButtonModel(buttonTitle.getSerch());
|
search.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
play=true;
|
|
// Ö´ÐÐSQL²éѯÓï¾ä»ñµÃµÄ½á¹û¼¯
|
String startTime=getStartButton().getText();//¹ì¼£²éѯ¿ªÊ¼Ê±¼ä
|
String stopTime=getStopButton().getText();//¹ì¼£²éѯ¼¼Êõʱ¼ä
|
|
if(falstchoose==30) {
|
startTime=getMinuteAgoTime(-30);
|
stopTime=GetNowTime.now();
|
}else if(falstchoose==60) {
|
startTime=getMinuteAgoTime(-60);
|
stopTime=GetNowTime.now();
|
}
|
|
if(startTime.equals(stopTime)) {//Èç¹û¿ªÊ¼Ê±¼äµÈÓÚ½áÊøÊ±¼ä±¨´í
|
ShowMessage.zidingyi("¿ªÊ¼Ê±¼ä²»ÄܵÈÓÚ½áÊøÊ±¼ä£¡");
|
return;
|
}
|
|
tag_id=getSerchFile().getText().trim();//ËÑË÷ÊäÈë¿òµÄÄÚÈÝ
|
|
//Èç¹ûÊäÈëµÄÖ»°üº¬×ÖĸºÍÊý×Ö
|
if(!JugeNumber.isLetterDigit(tag_id)) {
|
tag_id=Tag_Dell.get_tagid(tag_id);
|
}
|
|
if(tag_id.equals("´æÔÚÖØÃû")) {
|
return;
|
}
|
|
String tb_track="tb_track_"+startTime.substring(0,10).replace("-", "");
|
|
String serch="SELECT * FROM "+tb_track+" WHERE tagid='"+tag_id+"' AND TIME BETWEEN '" +
|
startTime+"' AND '"+stopTime+"'";
|
List list = DatabaseManagement.serch(serch);//½«ÁбíÖÐËùÓнá¹û¼¯¸øµ½list¼¯ºÏ
|
size=list.size();
|
jbt_tip.setText("ÒѼÓÔØÊý¾Ý"+size+"Ìõ");
|
iterator = list.iterator();//´´½¨µü´úÆ÷
|
try {
|
if (size!=0) {// ½á¹û¼¯ÖбêÇ©IDÓг¬¹ýÒ»ÌõµÄ¼Ç¼
|
history_tag_vector=new ArrayList<>();
|
while(iterator.hasNext()) {
|
HistoryTrack hisTaget=new HistoryTrack();
|
List info = (List) iterator.next();//½«µü´úÆ÷ÀïÃæµÄÔªËØ¸øµ½list¼¯ºÏ
|
int xpos=Integer.valueOf((String) info.get(2)).intValue();
|
int ypos=Integer.valueOf((String) info.get(3)).intValue();
|
String time=(String) info.get(6);
|
hisTaget.setPosx(xpos);//X×ø±ê
|
hisTaget.setPosy(ypos);//y×ø±ê
|
hisTaget.setTagid(tag_id);//ÉèÖÃͼ±êID
|
floor=(String) info.get(5);
|
hisTaget.setLayer(floor);//ÉèÖÃͼ²ã
|
hisTaget.setTime(time);
|
history_tag_vector.add(hisTaget);//½«ÀúÊ·¶ÔÏóÌí¼Óµ½¼¯ºÏ
|
}
|
dian_num=list.size();
|
x_line=new int[dian_num+2];
|
y_line=new int[dian_num+2];
|
n=new int[dian_num];
|
iterator2= history_tag_vector.iterator();//´´½¨µü´úÆ÷
|
startThread();//Æô¶¯Ïß³Ì
|
}
|
else {
|
ShowMessage.zidingyi("ÄãËÑËùµÄÄÚÈÝÊý¾Ý²»´æÔÚ£¡");
|
return;
|
}
|
} catch (Exception er) {
|
er.printStackTrace();
|
}
|
}
|
});
|
}
|
return search;
|
}
|
|
/**Ñ¡Ôñ¿ªÊ¼Ê±¼äµÄÎı¾*/
|
public JlableModel getStartTime() {
|
if(startTime==null) {
|
startTime=new JlableModel();
|
startTime.setText("Ñ¡Ôñ¿ªÊ¼Ê±¼ä: ");
|
}
|
return startTime;
|
}
|
|
/**Ñ¡Ôñ¿ªÊ¼Ê±¼ä°´Å¥*/
|
public JButton getStartButton() {
|
if(startButton==null) {
|
startButton=new GetDate();
|
startButton.setBackground(UIColor.getButton_color());
|
startButton.setForeground(UIColor.getButton_font());
|
|
}
|
return startButton;
|
}
|
|
/**Ñ¡Ôñ½áÊøÊ±¼ä°´Å¥*/
|
public JButton getStopButton() {
|
if(stopButton==null) {
|
stopButton=new GetDate();
|
stopButton.setBackground(UIColor.getButton_color());
|
stopButton.setForeground(UIColor.getButton_font());
|
}
|
return stopButton;
|
}
|
|
/**Ñ¡Ôñ½áÊøÊ±¼äµÄÎı¾*/
|
public JlableModel getStoptTime() {
|
if(stopTime==null) {
|
stopTime=new JlableModel();
|
stopTime.setText("Ñ¡Ôñ½áÊøÊ±¼ä: ");
|
}
|
return stopTime;
|
}
|
|
|
/**ÔÝÍ£°´Å¥*/
|
public JButtonModel getZan_ting() {
|
if(zan_ting==null) {
|
zan_ting=new JButtonModel("ÔÝ Í£");
|
zan_ting.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
bo_fang=false;
|
}
|
});
|
}
|
return zan_ting;
|
}
|
|
/**¼ÌÐø°´Å¥*/
|
public JButtonModel getJi_xu() {
|
if(ji_xu==null) {
|
ji_xu=new JButtonModel("¼Ì Ðø");
|
ji_xu.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
bo_fang=true;
|
startThread();//Æô¶¯Ïß³Ì
|
}
|
});
|
}
|
return ji_xu;
|
}
|
|
public JTextField getZuobiao() {
|
if(zuobiao==null) {
|
zuobiao=new JTextField(20);
|
zuobiao.setText("ÿ´Î¹ì¼£²éѯʱ¼ä²»Òª³¬¹ý24Сʱ");
|
}
|
return zuobiao;
|
}
|
|
|
|
|
/**»ñȡѡÔñÈËÔ±Îı¾¿ò*/
|
public JTextField getSerchFile() {
|
if(serchFile==null) {
|
serchFile=new JTextField(6);
|
}
|
return serchFile;
|
}
|
|
|
/**»ñȡѡÔñ²¥·ÅËÙ¶ÈÏÂÀ¿ò*/
|
public JComboBox<String> getPlay_speed() {
|
|
if(play_speed==null) {
|
String[] sudu= {" X1"," X2"," X4"," X6"," X8"," X16"};
|
play_speed=new JComboBox<>(sudu);//´´½¨ÏÂÀ¿ò¶ÔÏó
|
play_speed.setFont(new Font("΢ÈíÑźÚ", Font.PLAIN, 12));//ÉèÖÃ×ÖÌå
|
play_speed.updateUI();//¸üÐÂUI
|
play_speed.addItemListener(new ItemListener() {
|
public void itemStateChanged(ItemEvent e) {
|
if(e.getStateChange()==ItemEvent.SELECTED) {
|
String vsd=(String)getPlay_speed().getSelectedItem();
|
switch (vsd.trim()) {
|
case "X1":
|
sulv=1000;
|
break;
|
case "X2":
|
sulv=500;
|
break;
|
case "X4":
|
sulv=250;
|
break;
|
case "X6":
|
sulv=160;
|
break;
|
case "X8":
|
sulv=125;
|
break;
|
case "X16":
|
sulv=62;
|
break;
|
default:
|
break;
|
}
|
}
|
|
}
|
});
|
}
|
return play_speed;
|
}
|
|
public JlableModel getChooseMap() {
|
if(chooseMap==null) {
|
chooseMap=new JlableModel();
|
chooseMap.setText("Ñ¡Ôñͼ²ã:");
|
}
|
return chooseMap;
|
}
|
|
/**»ñȡѡÔñͼ²ãÏÂÀÁбí¿ò*/
|
public JComboBox<String> getComboBox() {
|
ComboBoxModel<String > coModel=new DefaultComboBoxModel<>(Map_Dell.getMapName());//ÏÂÀÁбíÄ£ÐÍ
|
if(comboBox==null) {
|
comboBox=new JComboBox<>();//´´½¨ÏÂÀ¿ò¶ÔÏótagComboBox
|
comboBox.setFont(new Font("΢ÈíÑźÚ", Font.PLAIN, 12));//ÉèÖÃ×ÖÌå
|
comboBox.setModel(coModel);
|
comboBox.addItemListener(new ItemListener() {
|
public void itemStateChanged(ItemEvent e) {
|
if(e.getStateChange()==ItemEvent.SELECTED) {
|
imageName=(String)getComboBox().getSelectedItem();
|
for(int i=0;i<Map_Dell.getMap_vector().size();i++) {
|
tbmap=Map_Dell.getMap_vector().get(i);
|
if(tbmap.getMapname().equals(imageName)) {
|
selecteFloor=tbmap.getFloor();
|
imageAdress="image/mapfile/"+tbmap.getMapname();//ÉèÖõØÍ¼µØÖ·
|
image=new ImageIcon(imageAdress).getImage();//»ñÈ¡µØÍ¼
|
map_true_width=tbmap.getX_Truelength();//µØÍ¼X·½Ïòʵ³¤
|
map_true_height=tbmap.getY_Truewidth();//µØÍ¼Y·½Ïòʵ³¤
|
width=tbmap.getX_Pixel();//ͼƬxÏñËØ
|
height=tbmap.getY_Pixel();//ͼyÏñËØ
|
x_x0=tbmap.getX0_length();
|
y_y0=tbmap.getY0_width();
|
new_width=width;
|
new_height=height;
|
x_bi=map_true_width/new_width;
|
y_bi=map_true_height/new_height;
|
x0=0;
|
y0=0;
|
}
|
}
|
if(selecteFloor.equals(floor)) {
|
getJi_xu().doClick();
|
}else {
|
bo_fang=false;
|
}
|
bi=1;
|
mycanvas.repaint();
|
}
|
}
|
});
|
}
|
return comboBox;
|
}
|
|
|
/**»ñÈ¡µØÍ¼*/
|
public Image getImage() {
|
return image;
|
}
|
|
/**ÉèÖõØÍ¼*/
|
public void setImage(String imageAdress) {
|
image=new ImageIcon(imageAdress).getImage();//»ñÈ¡µØÍ¼
|
}
|
|
/**ÄÚ²¿µÄ»²¼*/
|
class Mycanvas extends Canvas implements MouseListener,MouseMotionListener,MouseWheelListener {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
|
public void update(Graphics g){ //¸²¸Çupdate·½·¨£¬½ØÈ¡Ä¬Èϵĵ÷Óùý³Ì
|
ImageBuffer = createImage(this.getWidth(), this.getHeight()); //´´½¨Í¼Ðλº³åÇø
|
GraImage = ImageBuffer.getGraphics(); //»ñȡͼÐλº³åÇøµÄͼÐÎÉÏÏÂÎÄ
|
paint(GraImage); //ÓÃpaint·½·¨ÖбàдµÄ»æÍ¼¹ý³Ì¶ÔͼÐλº³åÇø»æÍ¼
|
GraImage.dispose(); //ÊÍ·ÅͼÐÎÉÏÏÂÎÄ×ÊÔ´
|
g.drawImage(ImageBuffer, 0, 0, this); //½«Í¼Ðλº³åÇø»æÖƵ½ÆÁÄ»ÉÏ
|
}
|
|
|
public Mycanvas() {
|
origin = new Point();
|
addMouseWheelListener(this);
|
addMouseListener(this);
|
addMouseMotionListener(this);
|
}
|
|
|
public void paint(Graphics g) {
|
Graphics2D g2=(Graphics2D) g;
|
g2.drawImage(image, x0, y0, new_width, new_height,this);
|
framey=this.getSize().height;//µ±Ç°Ãæ°åµÄ¸ß¶È
|
framex=this.getSize().width;
|
//Èç¹û±êÇ©´æÔÚÔòÔËÐÐ
|
if(true) { //»æÖÆÔµã
|
g2.setColor(Color.red);
|
g2.fillOval(x0, y0,8,8);
|
}
|
|
if(play && selecteFloor.equals(floor)) {
|
int wd=tagimage.getWidth(this);//ͼƬx
|
int hd=tagimage.getHeight(this);//ͼƬy
|
int x=(new Double(posx/x_bi)).intValue()+x0;
|
int y=(new Double(posy/y_bi)).intValue()+y0;
|
|
|
|
g2.setColor(green);//ÂÌÉ«
|
g2.fillRoundRect(x-50, y-hd-30,95, 30,3,3);
|
g2.setFont(FontChoose.ziti(14));
|
g2.setColor(Color.white);
|
g2.drawString(tag_name, x-42, y-hd-10);
|
g2.setColor(color);
|
g2.setStroke(stroke);
|
String zuobiaoText=" ×ø±ê£ºX="+posx+" Y="+posy ;
|
getZuobiao().setText(zuobiaoText);
|
|
|
for(int j = 0;j<=n[0];j++) {
|
int x1=(new Double(x_line[j]/x_bi)).intValue()+x0;
|
int y1=(new Double(y_line[j]/y_bi)).intValue()+y0;
|
|
int x2 = (new Double(x_line[j + 1] / x_bi)).intValue() + x0;
|
int y2 = (new Double(y_line[j + 1] / y_bi)).intValue() + y0;
|
if (x1!=x0&&y1!=y0) {
|
g.drawLine(x1, y1, x2, y2);
|
}
|
|
}
|
|
g2.drawImage(tagimage, x-wd/2, y-hd,wd,hd,this);
|
g2.setColor(green);//ÂÌÉ«
|
g2.fillRoundRect(x-100,y+hd-20,190,30,3,3);
|
g2.setColor(Color.white);
|
g2.drawString(time, x-90, y+hd);
|
|
}
|
|
}
|
|
public void mouseReleased(MouseEvent e) {//°´¼üÊÍ·Å
|
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
this.repaint();
|
}
|
|
public void mousePressed(MouseEvent e) {//°´¼ü°´ÏÂ
|
origin.x = e.getX(); //»ñµÃÊó±êµã»÷ʱºòµÄX×ø±ê
|
origin.y = e.getY();//»ñµÃÊó±êµã»÷ʱºòµÄY×ø±ê
|
orix=x0;//½«µ±Ç°Í¼Æ¬µÄÆðµã×ø±êX¸øorix
|
oriy=y0;//½«µ±Ç°Í¼Æ¬µÄÆðµã×ø±êX¸øoriy
|
}
|
|
public void mouseExited(MouseEvent e) {//Êó±êÍ˳ö
|
|
}
|
|
public void mouseEntered(MouseEvent e) {//Êó±ê½øÈë
|
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
}
|
|
/**Êó±êµã»÷ʼþ*/
|
public void mouseClicked(MouseEvent e) {//Êó±êµã»÷
|
if(e.isMetaDown()){//¼ì²âÊó±êÓÒ¼üµ¥»÷
|
popupMenu().show(e.getComponent(), e.getX(), e.getY());
|
|
}
|
|
}
|
|
public void mouseDragged(MouseEvent e) {
|
setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
|
//Ãæ°åеÄ×ø±êλÖà = ÒÆ¶¯Ç°×ø±êλÖÃ+£¨Êó±êÖ¸Õëµ±Ç°×ø±ê-Êó±ê°´ÏÂʱָÕëµÄλÖã©
|
x0=e.getX()-origin.x+orix;
|
y0=e.getY()-origin.y+oriy;
|
this.repaint();
|
|
}
|
|
public void mouseMoved(MouseEvent e) {
|
|
|
}
|
|
/**Êó±ê¹öÂÖ¹ö¶¯Ê¼þ¼àÌý*/
|
public void mouseWheelMoved(MouseWheelEvent e) {//Êó±ê¹öÂÖ¹ö¶¯¼àÌý
|
//e.getWheelRotation()>0±íʾÊó±ê¹öÂÖÏòÍâ¹ö¶¯Ð¡ÓÚ0±íʾÏòÄÚ¹ö¶¯
|
int xh1=e.getX();
|
int yh1=e.getY();
|
double bi0=bi;
|
int xr=x0;
|
int yr=y0;
|
|
if(e.getWheelRotation()<0 && countnum <600) {//·Å´óͼƬ
|
countnum=countnum+50;
|
bi=Map_suo_fang.get_bi(countnum);
|
}
|
|
if(e.getWheelRotation()>0 && countnum >0) {//ËõСͼƬ
|
countnum=countnum-50;
|
bi=Map_suo_fang.get_bi(countnum);
|
}
|
|
new_width=new Double(width*bi).intValue();
|
new_height=new Double(height*bi).intValue();
|
x_bi=map_true_width/new_width;//µØÍ¼µÄʵ¼Ê³¤¶ÈºÍеĿí¶È±ÈÖµ
|
y_bi=map_true_height/new_height;//µØÍ¼Êµ¼Ê¸ß¶ÈºÍеĸ߶ȱÈÖµ
|
x0=new Double(xh1-(xh1-xr)*bi/bi0).intValue();
|
y0=new Double(yh1-(yh1-yr)*bi/bi0).intValue();
|
|
this.repaint();
|
}
|
|
|
}
|
|
/**Æô¶¯Ï̵߳ķ½·¨*/
|
public void startThread() {
|
Thread t=new Thread(this);
|
t.start();
|
}
|
|
public void run() {
|
if(iterator2==null) {
|
ShowMessage.zidingyi("Êý¾Ý²»´æÔÚ");
|
return;
|
|
}
|
while(iterator2.hasNext() && bo_fang) {
|
try {
|
histrack= iterator2.next();//½«µü´úÆ÷ÀïÃæµÄÔªËØ¸øµ½list¼¯ºÏ
|
size--;
|
jbt_tip.setText("Ê£ÓàÊý¾Ý"+size+"Ìõ...");
|
tagid=histrack.getTagid();
|
tagimage=person_Dell.get_Person(tagid).getP_image().getImage();
|
tag_name=person_Dell.get_Person(tagid).getP_name()+" "+tagid;
|
posx=histrack.getPosx()-x_x0;//ÀúÊ·¶ÔÏóX×ø±ê
|
posy=histrack.getPosy()-y_y0;//ÀúÊ·¶ÔÏóY×ø±ê
|
floor=histrack.getLayer();//ÀúÊ·¶ÔÏóµÄͼ²ã
|
time=histrack.getTime();
|
n[0]++;
|
if (n[0]<=dian_num) {
|
x_line[n[0]] = posx;
|
y_line[n[0]] = posy;
|
x_line[n[0] + 1] = x_line[n[0]];
|
y_line[n[0] + 1] = y_line[n[0]];
|
}
|
mycanvas.repaint();
|
Thread.sleep(sulv);//ÐÝÃßʱ¼ä
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public JPopupMenu popupMenu() {
|
JPopupMenu popupMenu = new JPopupMenu();// ´´½¨µ¯³öʽ²Ëµ¥¶ÔÏó
|
popupMenu.setBorderPainted(false);
|
JMenuItem center = new JMenuItem("Ôµã¾ÓÖÐ");//´´½¨²Ëµ¥Ïî
|
center.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
// TODO ×Ô¶¯Éú³ÉµÄ·½·¨´æ¸ù
|
x0=framex/2;
|
y0=framey/2;
|
mycanvas.repaint();
|
}
|
});
|
popupMenu.add(center);
|
return popupMenu;
|
}
|
|
|
|
public JButtonModel getJbt_tip() {
|
if(jbt_tip==null) {
|
jbt_tip=new JButtonModel("ÒѼÓÔØ0ÌõÊý¾Ý...");
|
}
|
return jbt_tip;
|
}
|
|
|
|
/**¿ì½Ýʱ¼äÑ¡Ôñ°´Å¥×é*/
|
public ButtonGroup getBtgroup() {
|
if(btgroup==null) {
|
btgroup=new ButtonGroup();
|
btgroup.add(getTime30());
|
btgroup.add(getTime60());
|
}
|
return btgroup;
|
}
|
|
/**30·ÖÖÓ¿ìËÙÑ¡Ôñ*/
|
public JRadioButton getTime30() {
|
if(time30==null) {
|
time30=new JRadioButton("30·Ö");
|
time30.setSelected(false);
|
time30.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
if(time30.isSelected()) {
|
falstchoose=30;
|
}
|
}
|
});
|
}
|
return time30;
|
}
|
|
/**60·ÖÖÓ¿ìËÙÑ¡Ôñ*/
|
public JRadioButton getTime60() {
|
if(time60==null) {
|
time60=new JRadioButton("60·Ö");
|
time60.setSelected(false);
|
time60.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
if(time60.isSelected()) {
|
falstchoose=60;
|
}
|
}
|
});
|
}
|
return time60;
|
}
|
|
|
/**¼ÆËãÒ»¶Îʱ¼ä֮ǰµÄʱ¼ä*/
|
public static String getMinuteAgoTime (int ago) {
|
String minute = "" ;
|
Date date = new Date();//»ñÈ¡µ±Ç°Ê±¼ä
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(date);
|
calendar.add(Calendar.MINUTE, ago);// 30ᅅ
|
//»ñÈ¡µ½ÍêÕûµÄʱ¼ä
|
minute = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
|
return minute;
|
}
|
|
|
|
public static void setFalstchoose(int falstchoose) {
|
TrackPlay.falstchoose = falstchoose;
|
}
|
|
|
}
|