在本示例中,您錯誤地分配了偵聽器。你寫道:
mainTableView2.focusModelProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
mainTableView1.getSelectionModel().clearSelection();
}
});
這意味着,TableView中具有改變重點項目或細胞,它允許programmaticaly改變焦點的策略,跟蹤關注項目,等等......你在添加監聽器改變該策略,實際上通常不會改變。如果您想跟蹤焦點的表格項,您應該在該焦點模型的屬性上添加偵聽器。
你想應該是這樣的內容:
mainTableView2.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
mainTableView1.getSelectionModel().clearSelection();
}
});
此屬性(focused屬性)來控制的聚焦狀態響應(藍色邊框 - 裏海風格,紅色邊框爲深紫色的風格)。
,但評估過程中,我發現了,這有一個bug(見註釋),所以我建議該問題的解決方法:
scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> ov, Node t, Node t1) {
if (t1 == table2) {
table1.getSelectionModel().clearSelection();
}
if (t1 == table1) {
table2.getSelectionModel().clearSelection();
}
}
});
粘貼有任何類似的邏輯..
該解決方案在理論上是正確的,但看起來像是有一個錯誤 – 2013-02-19 20:20:27
這就是爲什麼這個想法不起作用:http://javafx-jira.kenai.com/browse/RT-28491 – 2013-02-19 20:25:56