gpt4 book ai didi

treeview - JavaFx 2.0 : get TreeItems or Nodes currently visible on screen

转载 作者:行者123 更新时间:2023-12-01 12:55:12 25 4
gpt4 key购买 nike

我有TreeView<TitledPane>并且只想显示 TitledPane 的“未读”内容.

如果 TitledPane 的内容,我想通知一些事件在屏幕上可见。

TitledPaneexpandedProperty() ,如此崩溃,但我没有看到任何东西可以过滤掉 TreeView 上远离且未显示的 TreeItems。

我想到的另一种可能的方法是使用 visibleProperty 检查位于 TitledPane 中的节点的可见性。 ,但这似乎不起作用。

pane.visibleProperty().addListener(new EnhancedListener(pane));

private class EnhancedListener implements ChangeListener<Boolean>
{
Node parent;
EnhancedListener(Node parent)
{
this.parent = parent;
}
@Override
public void changed(ObservableValue<? extends Boolean> arg0,
Boolean arg1, Boolean arg2) {
TitledPane p = (TitledPane) parent;
System.out.println(((Label)p.getContent()).getText()+" " + arg2);
}
}

我使用 JavaFX 2.0.3

最佳答案

请参阅此 JavaFX 论坛主题 "ListView Visible Items"和相关的 JavaFX 问题数据库条目 "Item visibility in scrollable components should be in API"请求增强功能,以便更轻松地实现您的目标。

visibleProperty 与添加到场景时是否可以看到项目有关,而不是当前是否正在显示(例如,如果布局节点的剪辑或滚动当前阻止显示子节点,子节点仍然可以具有 visibleProperty 值 true,即使您当前看不到它)。所以简而言之,正如您发现的那样,它在这里对您没有帮助。

上面链接的论坛帖子为 ListView 提供了以下解决方法,您可以根据您的 TreeView 情况进行调整,但您需要采取一些措施知道场景中显示的 TreeView 渲染单元格正在发生变化以触发您需要的“事件”。

VirtualFlow vf = ((VirtualFlow)((ListViewSkin)myList.getChildrenUnmodifiable().get(0)).getChildrenUnmodifiable().get(0));
System.out.println(vf.getFirstVisibleCell().getIndex()+", "+vf.getLastVisibleCell().getIndex());

关于treeview - JavaFx 2.0 : get TreeItems or Nodes currently visible on screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com