📄 newjtable.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 + -