2013-02-26 3 views
0

EditorPalette에서 템플릿은 mxGraphComponent에서 끌어서 놓을 수있는 JLabel을 사용하여 표현됩니다.JTree의 JTree

그러나, 나는의 JTree를 통해 계층 구조를 사용하여 EditorPalette 이러한 템플릿을 추가 할, 그리고 노드 드래그 및 일반 템플릿처럼 GraphComponents에서 삭제할 수 없습니다

당신은 기능을 제공하여 좀 도와 줄래 구성 요소의 왼쪽에 JTree를 추가하고 mxGraphComponent에서 끌어서 놓기위한 추가 템플릿?

답변

1

오케이, 알겠습니다. 내 실수는 내가 mxCell 제공하는 형상 정보를 생성, 그래서 대신 내가 가진 위 코드에서

mxCell cell = new mxCell(component); 

의 드래그 기능과 같은 추가

mxCell cell = new mxCell(component, new mxGeometry(), ""); 

완전한 방법을 쓰는 것을이었다 이 :

public void addComponentTabListeners() { 
    final JTree componentTree = view.componentTree; 

    DragGestureListener dragGestureListener = new DragGestureListener() { 
     @Override 
     public void dragGestureRecognized(DragGestureEvent arg0) { 
      TreePath path = componentTree.getSelectionPath(); 
      if ((path == null) || (path.getPathCount() <= 1)) { 
       return; 
      } 
      DefaultMutableTreeNode componentsNode = (DefaultMutableTreeNode) path.getLastPathComponent(); 
      I_Component component = null; 
      try { 
       component = ComponentHandler_KonsensApplication.getInstance().createInstance(
         componentsNode.toString(), "need unique Name here"); 
      } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } catch (InstantiationException e) { 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
      mxCell cell = new mxCell(component, new mxGeometry(), ""); 

      cell.setVertex(true); 
      mxRectangle bounds = new mxRectangle(); 
      bounds.setHeight(80); 
      bounds.setWidth(80); 
      mxGraphTransferable t = new mxGraphTransferable(new Object[] { cell }, bounds); 
      arg0.startDrag(null, mxSwingConstants.EMPTY_IMAGE, new Point(), t, null); 
     } 
    }; 

    DragSource dragSource = new DragSource(); 
    dragSource.createDefaultDragGestureRecognizer(componentTree, DnDConstants.ACTION_COPY, 
      dragGestureListener); 
}