我有一个具有以下节点布局的 JavaFX 应用程序:
- 拆分窗格
- 文本区域
- 拆分窗格
- 选项卡窗格
- 选项卡窗格
示例代码:
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);
TextArea,displayTextArea,是一个不可编辑的文本区域,它显示一些文本数据,具体取决于两个 TabPanes、leftTabPane 和 rightTabPane 内打开的 Tab 对象中存在的数据。TabPane 的 SelectionModel 是单数的,因此每个 TabPane 一次只能选择一个选项卡。
我的限制之一是只有一个打开的 Tab 对象数据应该影响 displayTextArea 的文本。当只有一个 TabPane 对象时,这很容易实现,方法是设置 OnSelectionChanged EventHandler 并使用 isSelected() 来确定选择的更改是进入还是退出选择。并且选定的选项卡将是影响 displayTextArea 的选项卡。
当有两个 TabPanes 时,我希望内容节点当前具有焦点的选项卡,例如 TextField 或用户正在输入将影响 displayTextArea 文本的数据的表单。从用户的角度来看,他们将单击 TabPanes 中打开的选项卡,而他们最后一次单击的选项卡将影响 displayTextArea。但这就是我撞墙的地方。
尝试和失败的方法:
设置某种侦听器以通知焦点从一个选项卡的内容节点到另一个选项卡的内容节点,无论它们在哪个 TabPane 中,然后相应地更新 displayTextArea。- 没有 AddFocusListener 方法,我不确定如何使用可用的面向焦点的方法和功能来实现此行为。
强制在多个 TabPanes 之间的任一时间只选择 1 个 Tab,并坚持使用上述 OnSelectionChanged EventHandler 方法。- 我不知道从哪里开始,也找不到任何东西。
在这个问题中,有一个主题是在选项卡的内容节点中将焦点更改为 TextField 对象,但我无法从该帖子中获取任何对我的目的有用的东西。
我在这里迷路了,不知道如何实现此显示的必要功能。