2017-06-06 170 views
2

我有TableView,我想在细胞失去焦点时做点什么。 我在此TableView上启用了单元格选择,它不侦听丢失的单元格焦点。我试过这种方式:Javafx:TableCell焦点丢失

table.getFocusModel().focusedCellProperty().addListener((observable, oldValue, newValue) -> { 
     if (newValue != null) { 
      //doSomething 
     } 
     // else doSomethingElse doesn't work 
}); 

简单地说,当我取消选择(Ctrl +单击)单元格时它不听。我错了什么或者我怎么能听到TableCell丢失的焦点?

+1

它是细胞*焦点*您感兴趣,或细胞*选择*? –

+0

@James_D我对单元格选择感兴趣,以某种方式倾听selectedCell,但选择模型没有'selectedCellProperty'。如果我能以某种方式听取选定的单元格(不重点,也许我在问题中错误),那将是完美的。你有什么想法怎么做? – Sunflame

回答

0

我使用这个:

TABLEVIEW.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) { 
     if (newPropertyValue) { 
      System.out.println("on focus"); 
     } else { 
      System.out.println("out focus"); 
     } 
    } 
}); 

它只能如果选择其他可选元素(不工作在一个窗格e.g点击)。

+1

当然,只是关注整个表格,而不是单个单元格。例如。如果焦点(或选择)从一个单元移动到另一个单元,则根本不会调用监听器。 –

+0

我也尝试过这种方式,但是当我想取消选择单元格时,'/ doSomething'部分我不想使用/取消某个按钮,这取决于单元格是否被聚焦。所以很遗憾,这不会帮助我:( – Sunflame

+0

是的,没错,只有当你选择了表格,然后取消选择 – Developer66