我有以下節點佈局一個JavaFX應用程序:Javafx - 並排TabPanes。如何找到哪個選項卡具有焦點/選擇
- SplitPane
- 文本區域
- SplitPane
- TabPane
- TabPane
例如代碼:
SplitPane topBottomSplitPane = new SplitPane();
TextArea displayTextArea = new TextArea();
SplitPane leftRightSplitPane = new SplitPane();
topBottomSplitPane.getItems().addAll(displayTextArea, leftRightSplitPane);
TabPane leftTabPane = new TabPane();
TabPane rightTabPane = new TabPane();
leftRightSplitPane.getItems().addAll(leftTabPane, rightTabPane);
的文本區域,displayTextArea,是顯示一些文本的數據時哪些數據是存在於該打開的懸垂的不可編輯的文本區在兩個TabPanes中的Tab對象,leftTabPane和rightTabPane。 TabPane的SelectionModel是單數,因此每個TabPane每次只能選擇一個Tab。
我遇到的一個限制是,只有一個打開的Tab對象數據應該影響displayTextArea的文本。當只有一個TabPane對象時,通過設置OnSelectionChanged EventHandler並使用isSelected()來確定選擇的更改是選擇更改還是更改,這很容易實現。所選的Tab將是影響displayTextArea的那個Tab。
當有兩個TabPanes我想誰的內容節點當前具有焦點的選項卡,說一個文本字段或形式,其中用戶輸入數據,這將影響displayTextArea的文本。從用戶的角度來看,他們會點擊兩個TabPanes中打開的Tabs,他們點擊的最後一個會影響displayTextArea。但那正是我遇到牆壁的地方。
嘗試和失敗的途徑:其中
設置某種聽者從選項卡的內容節點的一個通知焦點的改變到另一個選項卡的內容節點,無論TabPane他們都在,然後相應地更新displayTextArea。 - 沒有AddFocusListener方法,我不確定如何使用可用的面向焦點的方法和功能來實現此行爲。
強制只有1 Tab在多個TabPanes之間的任何時候被選中,並堅持前面提到的OnSelectionChanged EventHandler方法。 - 我不知道該從哪裏開始,我一直無法找到任何東西。
在這種question有改變成焦點在選項卡的內容節點TextField對象的主題,但我無法抓住任何東西從我的後目的是有用的。
我迷失在這裏,不知道如何實現此顯示所需的功能。
我忘了提,可以有兩個TabPanes標籤之間的任意數字。這張照片只是整體佈局的一個例子。雖然您的方法可能會改變以考慮到這一點,但仍然會出現問題。檢查這個用例:用戶點擊leftTabPane的tab2,然後點擊rightTabPane的tab2。然後用戶想要返回到leftTabPane的tab2,但它已經是當前選定的選項卡,因此不會引發選擇事件的更改。當前選中兩個TabPanes的tab2,因此從一個到另一個不會拋出事件。 – mcdonasm