2017-07-17 43 views
0

我有兩個TableView s的視圖,我想獲取最後一個選定的表,所以最後一次選擇了這個表的行。我想:JavaFx:獲取最後一個關注表

  • table.isFocused()但兩個表返回false,我猜是因爲我選擇了一個行而不是表本身。

  • table.getFocusModel().getFocusedItem() != null,但是如果我在兩個表中選擇一行,它對兩個表都返回true。

所以,我怎樣才能得到最後選定表的行,我有一個骯髒的解決方案,來定義枚舉和監聽器添加到tableView的選擇模型,但我認爲還有一個更簡單的方法,所以你有什麼主意嗎?對我來說,最好的方法是對一個tableview返回true,對另一個返回false,對於最後一個選擇當然是true。

回答

0

我看到了一個解決方案:你有一個臨時變量,它指向最後選擇的節點,你聽的專注財產2個表視圖:

Node lastSelectedTable = null; 

tableView1.focusedProperty().addListener((observable, oldValue, newValue) -> { 
    if (newValue) { 
     lastSelectedTable = tableView1; 
    } 
}); 

tableView2.focusedProperty().addListener((observable, oldValue, newValue) -> { 
    if (newValue) { 
     lastSelectedTable = tableView2; 
    } 
}); 

在根據「lastSelectedTable」你有什麼時間對真正最新的重點表的參考。