2013-09-16 1 views
0

이 코드를 사용하여 불투명도를 변경하여 클릭 한 꼭지점과 그 자식을 강조 표시합니다. 그러나 내가 선택한 정점에 연결된 다음 자식에 대해서만 작동합니다. 버텍스를 클릭하면 어떻게 할 수 있습니까?하지만 아이에게 연결된 모든 버텍스와 꼭지점으로 연결되는 버텍스를 강조 표시 할 수도 있습니다. 미리 감사드립니다.jgraphx에서 여러 셀 강조 표시

public void CellHighlight() { 



      graphComponent.getGraphControl().addMouseListener(new MouseAdapter() { 
       public void mouseReleased (MouseEvent e1) { 
        if (e1.getButton() == 1 && e1.getClickCount() == 2) { 
        final Object selectedCell = graphComponent.getCellAt(e1.getX(), e1.getY()); 
        Object[] allCells = mxGraphModel.getChildren(graph.getModel(), graph.getDefaultParent()); 
        if (selectedCell != null) { 
         if (graph.getModel().isVertex(selectedCell)) { 
          for(Object myCell: allCells) { 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_OPACITY, OPACITY_PALE); 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_TEXT_OPACITY, OPACITY_PALE); 
          } 
          List<Object> cellList = new ArrayList<Object>(); 
          cellList.add(selectedCell); 
          Object[] outgoingEdges = mxGraphModel.getOutgoingEdges(graph.getModel(), selectedCell); 
          for(Object edge: outgoingEdges) { 
           cellList.add(graph.getModel().getTerminal(edge, false)); 
          } 
          cellList.addAll(Arrays.asList(outgoingEdges)); 
          for(Object myCell: cellList) { 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_OPACITY, OPACITY_HIGHLIGHT); 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_TEXT_OPACITY, OPACITY_HIGHLIGHT); 
          } 
         } else { 
          for(Object myCell: allCells) { 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_OPACITY, OPACITY_HIGHLIGHT); 
           graph.getView().getState(myCell).getStyle().put(mxConstants.STYLE_TEXT_OPACITY, OPACITY_HIGHLIGHT); 
          } 
         } 
         mxRectangle bounds = graph.getBoundsForCells(allCells, true, true, true); 
         graph.repaint(bounds); 
        } 
       } 


      } 
       }); 
      } 

답변

0

재귀가 답입니다!

내가 편리하게 사용하자마자, 셀을 삭제하고 그 자손 (어린이, 어린이 등)을 자동으로 삭제할 수 있도록 설명과 코드를 게시합니다. . 이 상황에서 적용하기가 아주 쉽습니다. 힌트를 얻으시기 바랍니다.