jface獲得treeview中某一行某一列 變色

此處用的是CheckboxTreeViewer  和treeview大同小異
 
首先獲得Point
tree.addMouseListener(new MouseListener() {
  
   @Override
   public void mouseUp(MouseEvent e) {
   
   }
  
   @Override
   public void mouseDown(MouseEvent e) {
    point = new Point(e.x, e.y);
   }
  
   @Override
   public void mouseDoubleClick(MouseEvent e) {
   
   }
  });
 
其次根據point獲得TreeItem  再變色
tv.addCheckStateListener(new ICheckStateListener() {
   public void checkStateChanged(CheckStateChangedEvent event) {
    // If the item is checked . . .
    TreeItem ti = tree.getItem(point);
    // 也可以不用point
    // TreeItem ti = ((TreeItem) tv.testFindItem(event.getElement()));
    if (event.getChecked()) {
     tv.setSubtreeChecked(event.getElement(), true);
     ti.setBackground(0, Display.getCurrent().getSystemColor(SWT.COLOR_RED)); //獲得當前行的第一列 並設置RED色
    } else {
     tv.setSubtreeChecked(event.getElement(), false);
     ti.setBackground(0, Display.getCurrent().getSystemColor(SWT.COLOR_CYAN)); //獲得當前行的第一列 並設置CYAN色

    }
   }
  });

發佈留言