gpt4 book ai didi

listview - ListView 的可见项

转载 作者:行者123 更新时间:2023-12-02 21:16:15 27 4
gpt4 key购买 nike

有没有办法在JavaFX中获取ListView的可见项?我想确定 JavaFX 应用程序中 ListView 显示的第一个可见项。

以下代码found here不适合我(仅适用于 TableView):

@SuppressWarnings("restriction")
public void getFirstAndLast(ListView<?> t) {
try {
ListViewSkin<?> ts = (ListViewSkin<?>) t.getSkin();
VirtualFlow<?> vf = (VirtualFlow<?>) ts.getChildren().get(0);
first = vf.getFirstVisibleCell().getIndex();
last = vf.getLastVisibleCell().getIndex();
}catch (Exception ex) {}
}

public int getFirst() {
return first;
}

public int getLast() {
return last;
}

最佳答案

正如 @James_D 所解释的,没有一个很好的开箱即用的解决方案,但只有黑客才能工作。我改编了在网上找到的解决方案,如下所示。

[...]
private int first = 0;
private int last = 0;

public void getFirstAndLast(ListView<?> t) {
try {
ListViewSkin<?> ts = (ListViewSkin<?>) t.getSkin();
VirtualFlow<?> vf = (VirtualFlow<?>) ts.getChildren().get(0);
first = vf.getFirstVisibleCell().getIndex();
last = vf.getLastVisibleCell().getIndex();
logger.debug("##### Scrolling first {} last {}", first, last);
} catch (Exception ex) {
logger.debug("##### Scrolling: Exception " + ex);
}
}

public int getFirst() {
return first;
}

public int getLast() {
return last;
}
[...]

示例输出:

13:56:38.652 [X Application Thread] DEBUG getFirstAndLast - Scrolling #### first 11 last 20 13:56:48.503 [X Application Thread] DEBUG getFirstAndLast - Scrolling #### first 9 last 17 13:57:08.491 [X Application Thread] DEBUG getFirstAndLast - Scrolling #### first 7 last 15 13:57:18.371 [X Application Thread] DEBUG getFirstAndLast - Scrolling #### first 3 last 15

关于listview - ListView 的可见项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457708/

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