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 comboBox=null;//Ñ¡Ôñͼ²ãÏÂÀ­¿ò JComboBox play_speed=null;//Ñ¡Ôñ²¥·ÅËÙ¶ÈÏÂÀ­¿ò String imageName=null;//ͼƬÃû³Æ String imageAdress=null;//ͼƬµØÖ· Vector 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 history_tag_vector;//ÀúÊ·¹ì¼£¶ÔÏóµÄ¼¯ºÏ String floor;//µØÍ¼ËùÔڵIJã JButtonModel zan_ting=null;//ÔÝÍ£°´Å¥ JButtonModel ji_xu=null;//¼ÌÐø°´Å¥ static boolean bo_fang=true;//²¥·Å Iterator 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 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 getComboBox() { ComboBoxModel 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