⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newjtable.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 JAVA
字号:
package net.aetherial.gis.surface.editTrackPoint;

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import net.aetherial.gis.cutAndLink.DynamicPanel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.garmin.GarminGMLDoc;
public class NewJTable extends JTable{
  private JPopupMenu popup = new JPopupMenu();
  private JMenuItem jMenuItemTurnToWaypoint = new JMenuItem();
  private JMenuItem jMenuItemDelete = new JMenuItem();
  private DynamicPanel dp = null;
  private Node tracks = null;
  private TableModel model = null;
  private boolean pointNull = false;
  public NewJTable(){
      super(new TableModel());
  }

  public NewJTable(TableModel model){
      super(model);
      this.model = model;
      this.init();
  }
  public NewJTable(TableModel model,Node track){
      super(model);
      this.init();
      this.model = model;
      this.tracks = track;
  }
  public NewJTable(TableModel model,Node track,DynamicPanel dp){
      super(model);
      this.init();
      this.model = model;
      this.tracks = track;
      this.dp = dp;
//      this.getColumn("序号");
  }

  private void init(){
    jMenuItemTurnToWaypoint.setText("转换成航点");
    jMenuItemDelete.setText("删除");
    popup.add(this.jMenuItemDelete);
    popup.add(this.jMenuItemTurnToWaypoint);
    ///
    this.addMouseListener(new NewJTable_mouseAdapter(this));
    this.jMenuItemTurnToWaypoint.addActionListener(new Popup_actionAdapter(this));
    this.jMenuItemDelete.addActionListener(new Popup_actionAdapter(this));
    ///
    try {
      this.getColumn("里程").setWidth(10);
    }
    catch (Exception ex) {
    }
  }
  public void setDp(DynamicPanel dp) {
    this.dp = dp;
  }

  private Node[] getSelected(){
    int[] row =this.getSelectedRows();
    Node[] point = new Node[row.length];
//    for(int i = 0;i<row.length;i++){
//      System.out.print("Selected:"+row[i]+"\r\n");
//    }
    NodeList nl = ItemValue.getTracksPoint(tracks);
    for(int i =0;i<row.length;i++){
      point[i] = nl.item(row[i]);
    }
    return point;
  }
  private void deletePoint(Node[] points){
    if(points == null){
      return;
    }
    int option = JOptionPane.showConfirmDialog(this.dp.clf,"删除选中的航迹点吗?","删除航迹点",JOptionPane.OK_CANCEL_OPTION);
    if(option == 0){
      for(int i =0;i<points.length;i++){
        ItemValue.deleteTracksPoint(this.tracks, points[i]);
      }
      this.model.setData(this.tracks);
      this.model.setDataEdited();
      this.model.fireTableDataChanged();
      this.repaint();
      this.dp.repaint();
      int pointNum = ItemValue.getTracksPoint(this.tracks).getLength();
      this.dp.clf.jPanelCut.jLabelNum.setText("包含的GPS采集数据共:" + pointNum + "个");
      this.dp.clf.jPanelLink.jLabelNum.setText("包含的GPS采集数据共:" + pointNum + "个");
      if(pointNum==0){
        pointNull = true;
      }
    }
  }
  private void turnToWaypoint(Node[] points){
    if(points == null){
      return;
    }
    for(int i =0;i<points.length;i++){
      ItemValue.turnTracksPointToWaypoint(points[i]);
    }
    this.dp.clf.jPanelCut.resetWaypointCombobox();
    this.dp.clf.jPanelCut.init();
    this.dp.clf.jPanelCut.jComboBox_itemStateChanged(null);
    this.dp.clf.fm.toFrontByTurnPoint();
    //this.dp.clf.setFocusable(true);
  }
  private void showPoint(Node point){
//    System.out.print("showPoint:X"+ItemValue.getTracksPointX(point)+"\r\n");
    dp.setPoint(point);
    (new DrawCartoon(this.dp)).start();
  }
  public void mouseRelease(MouseEvent e){
    if(e.isPopupTrigger()){
      if(pointNull){
        this.jMenuItemDelete.setEnabled(false);
        this.jMenuItemTurnToWaypoint.setEnabled(false);
      }
      popup.show(this,e.getX(), e.getY());
    }
  }
  public void mouseClick(MouseEvent e) {
//  显示该航迹点.
      Node point = ItemValue.getTracksPoint(this.tracks).item(this.getSelectedRow());
      if(point!=null){
        this.showPoint(point);
      }
  }

  public void popup_actionPerformed(ActionEvent e){
    //System.out.println("action");
    if(((JMenuItem)e.getSource()).equals(this.jMenuItemTurnToWaypoint)){
      System.out.println("Show:");
//      this.getSelected();
      this.turnToWaypoint(this.getSelected());
    }else if(((JMenuItem)e.getSource()).equals(this.jMenuItemDelete)){
      System.out.println("Delete:");
//      this.getSelected();
      this.deletePoint(this.getSelected());
    }

  }


}
class NewJTable_mouseAdapter
    extends MouseAdapter {
  private NewJTable adaptee;
  NewJTable_mouseAdapter(NewJTable adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseClicked(MouseEvent e) {
    adaptee.mouseClick(e);
  }

  public void mouseReleased(MouseEvent e) {
    adaptee.mouseRelease(e);
  }
}
class Popup_actionAdapter
    implements ActionListener {
  private NewJTable adaptee;
  Popup_actionAdapter(NewJTable adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.popup_actionPerformed(e);
  }
}
class DrawCartoon extends Thread{
  private DynamicPanel dp = null;
  DrawCartoon(DynamicPanel dp){
    this.dp = dp;
  }

  public void run(){
    for(int i =0;i<4;i++){
      dp.repaint();
      this.loopWait();
    }
    dp.setPoint(null);
    dp.repaint();
  }
  public void loopWait(){
    try {
      Thread.sleep(300);
    }
    catch (InterruptedException ex) {
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -