コード例 #1
0
 @Override
 public boolean importData(TransferHandler.TransferSupport info) {
   JTable target = (JTable) info.getComponent();
   JTable.DropLocation dl = (JTable.DropLocation) info.getDropLocation();
   int rowTo = dl.getRow();
   int max = table.getModel().getRowCount();
   if ((rowTo < 0) || (rowTo > max)) {
     rowTo = max;
   }
   target.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   try {
     Integer rowFrom = (Integer) info.getTransferable().getTransferData(localObjectFlavor);
     if (rowTo > rowFrom) {
       rowTo--;
     }
     if ((rowFrom != -1) && (rowFrom != rowTo)) {
       StateTableModel stateTableModel = (StateTableModel) table.getModel();
       stateTableModel.reorder(rowFrom, rowTo);
       target.getSelectionModel().addSelectionInterval(rowTo, rowTo);
       return true;
     }
   } catch (Exception e) {
     e.printStackTrace();
   }
   return false;
 }
コード例 #2
0
 @Override
 public boolean canImport(TransferHandler.TransferSupport info) {
   boolean b =
       (info.getComponent() == table)
           && info.isDrop()
           && info.isDataFlavorSupported(localObjectFlavor);
   table.setCursor(b ? DragSource.DefaultMoveDrop : DragSource.DefaultMoveNoDrop);
   return b;
 }
コード例 #3
0
ファイル: MyTransferHandler.java プロジェクト: judu/AlmaGTD
  @Override
  public boolean importData(TransferHandler.TransferSupport th) {
    Transferable tr = th.getTransferable();
    Component cp = th.getComponent();
    if (tr.isDataFlavorSupported(MyTransferable.data)) {
      if (cp instanceof JTree) {
        JTree tree = (JTree) cp;
        JTree.DropLocation location = tree.getDropLocation();
        TreePath path = location.getPath();
        int index = location.getChildIndex();
        if (index == -1) {
          index = 0;
        }
        // System.out.println(index);
        DefaultMutableTreeNode node;
        try {
          node = (DefaultMutableTreeNode) tr.getTransferData(MyTransferable.data);
          DefaultMutableTreeNode parent = (DefaultMutableTreeNode) path.getLastPathComponent();

          // vérifie si on ne drop pas dans un noeud fils
          if (node.isNodeChild(parent)) {
            return false;
          }
          Controleur controleur = Controleur.getInstance();
          controleur.deplacerElement(node, parent, index);

          DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
          model.removeNodeFromParent(node);
          // vérifie si on est plus hors index lors d'une réorganisation par ex
          if (index > parent.getChildCount()) {
            index = parent.getChildCount();
          }
          model.insertNodeInto(node, parent, index);
          //					controleur.ajoutElement(node, parent, index);

          TreePath newPath = path.pathByAddingChild(node);
          tree.makeVisible(newPath);
          tree.scrollRectToVisible(tree.getPathBounds(newPath));
        } catch (Exception e) {
          e.printStackTrace();
        }
        return true;
      }
    }
    return false;
  }