2011-07-26 17 views
7

Bir JTree sadece yaprakları sürüklenebilir yapmak gerekir bırakır yapmak ancak aşağıdaki kod parçacıkları sürüklenebilir ağaçtaki her düğüm yapar:JTree sadece sürüklenebilir

tree.setDragEnabled(true); 

bir spesifik INFORMATIONEN için sürüklenebilir eleman kısıtlayabilir nasıl özellik gibi ağaç düğümü myNode.isLeaf();

tia Jaster

cevap

5

Bu sigara yaprak düğümlerde bir null Transferable dönmek için JTree arasında TransferHandler değiştirerek yapılabilir.

JTree tree = new JTree(); 
    tree.setDragEnabled(true); 
    tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 

    tree.setTransferHandler(new TransferHandler(null) { 
     public int getSourceActions(JComponent c) { 
      return MOVE; 
     } 

     protected Transferable createTransferable(JComponent c) { 
      JTree tree = (JTree) c; 
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent(); 

      if (node.isLeaf()) { 
       // TODO create the Transferable instance for the selected leaf 
      } else { 
       return null; 
      } 
     } 
    }); 
+0

sadece dikkat muhtemelen tek yolu bu:

Burada hızlı bir örnektir özel bir işleyici yüklerken tüm varsayılan sürükleyerek davranış kaybolur. Yapacak aklı başında, tüm işlemleri varsayılan işleyiciye devretmek ve yalnızca son kez baktığımda transfer edilemez yaratımı engellemek (BasicTransferHandler'ın bazı önemli parçaları paketin özel veya korumalı olduğunu, tam olarak nerede olduğunu unuttuklarını) olurdu. – kleopatra

+0

Thx amaçlandığı gibi çalışır. – jaster

İlgili konular