2015-01-05 11 views
0

그래프에 선택 이벤트 리스너를 구현하여 선택한 정점의 스타일을 변경하고 싶습니다.그래프의 선택 이벤트 리스너

나는 다음과 같은 시도 :

String[] events = 

{mxEvent.ADD, mxEvent.ADD_CELLS, mxEvent.ADD_OVERLAY, mxEvent.AFTER_PAINT, 
mxEvent.ALIGN_CELLS, mxEvent.BEFORE_PAINT, mxEvent.BEFORE_UNDO, 
mxEvent.BEGIN_UPDATE, mxEvent.CELL_CONNECTED, mxEvent.CELLS_ADDED, 
mxEvent.CELLS_FOLDED, mxEvent.CELLS_MOVED, mxEvent.CELLS_ORDERED, 
mxEvent.CELLS_REMOVED, mxEvent.CELLS_RESIZED, mxEvent.CELLS_TOGGLED, 
mxEvent.CHANGE, mxEvent.CLEAR, mxEvent.CONNECT, mxEvent.CONNECT_CELL, 
mxEvent.CONTINUE, mxEvent.DONE, mxEvent.DOWN, mxEvent.END_UPDATE, 
mxEvent.EXECUTE, mxEvent.FIRED, mxEvent.FLIP_EDGE, mxEvent.FOLD_CELLS, 
mxEvent.GROUP_CELLS, mxEvent.INSERT, mxEvent.LABEL_CHANGED, 
mxEvent.LAYOUT_CELLS, mxEvent.MARK, mxEvent.MOVE_CELLS, mxEvent.NOTIFY, 
mxEvent.ORDER_CELLS, mxEvent.PAINT, mxEvent.REDO, mxEvent.REMOVE_CELLS, 
mxEvent.REMOVE_CELLS_FROM_PARENT, mxEvent.REMOVE_OVERLAY, mxEvent.REPAINT, 
mxEvent.RESIZE_CELLS, mxEvent.ROOT, mxEvent.SCALE, 
mxEvent.SCALE_AND_TRANSLATE, mxEvent.SELECT, mxEvent.SPLIT_EDGE, 
mxEvent.START, mxEvent.START_EDITING, mxEvent.STOP, mxEvent.TOGGLE_CELLS, 
mxEvent.TRANSLATE, mxEvent.UNDO, mxEvent.UNGROUP_CELLS, mxEvent.UP, 

mxEvent.UPDATE_CELL_SIZE}; 

    for (String event : events) { 

     jgxAdapter.addListener(event, new mxEventSource.mxIEventListener() { 

      @Override 
      public void invoke(Object sender, mxEventObject evt) { 
       System.out.println(evt.getName()); 
      } 

     }); 

    } 

하지만 콘솔에 인쇄하는 유일한 이벤트는 다음과 같습니다

cellsAdded, addCells, cellsResized, updateCellSize, repaint and cellConnected 

어떻게 jgraphx 또는 jgrapht로 선택 이벤트를 잡을 수 있습니까?

답변

1

선택 이벤트는 mxEvent.CHANGE이며 mxGraphSelectionModel을 통해 청취해야합니다.

jgxAdapter.getSelectionModel().addListener(mxEvent.CHANGE, new mxIEventListener() { 

     @Override 
     public void invoke(Object sender, mxEventObject evt) { 
      mxGraphSelectionModel sm = (mxGraphSelectionModel) sender; 
      mxCell cell = (mxCell) sm.getCell(); 
      if (cell != null && cell.isVertex()) { 
       //do something 
      } 
     } 

    });