当前位置: 首页 > 面试题库 >

Tableview可见行

蒋曾笑
2023-03-14
问题内容

我想为表格视图实现自定义滚动功能。因此,需要访问可见的行和单元格。

如何检测JavaFX tableview中的可见单元格和行?我在tableview的API描述中未找到任何有关此的信息。

谢谢


问题答案:

尝试在TableView中滚动到所需的行。我已经尝试过使用table.scrollTo(index),但是它无法正确滚动,因为它将所需的行设置为第一个可见行。

我已经在控制器上编写了下一个代码。

在这里,您还可以查看如何获取可见行。

/**
 * Used to manually scroll the Table
 */
private TableViewSkin<?> tableSkin;
private VirtualFlow<?> virtualFlow;

@Override
public void initialize(URL location, ResourceBundle resources) {
    ...
    ...
    Platform.runLater( ()-> { loadVirtualFlow(); });
}

/**
 * Loads the actual VirtualFlow
 */
private void loadVirtualFlow(){
    tableSkin = (TableViewSkin<?>) tableContent.getSkin();
    virtualFlow = (VirtualFlow<?>) tableSkin.getChildren().get(1);
}

/**
 * Scrolls the table until the given index is visible
 * @param index to be shown
 */
private void scrollTo(int index){
    int first = virtualFlow.getFirstVisibleCell().getIndex();
    int last = virtualFlow.getLastVisibleCell().getIndex();
    if (index <= first){
        while (index <= first && virtualFlow.adjustPixels(-1) < 0){
            first = virtualFlow.getFirstVisibleCell().getIndex();
        }
    } else {
        while (index >= last && virtualFlow.adjustPixels(1) > 0){
            last = virtualFlow.getLastVisibleCell().getIndex();
        }
    }
}

使用此代码,您可以轻松滚动到所需的索引:

scrollTo(index);

将元素添加到列表中之后,请记住在调用scrollTo之前先调用loadVirtualFlow,这样VirtualFlow会得到更新,并且不会引发异常。



 类似资料:
  • 问题内容: 如何在JavaFX 9中获取TableView中可见行的索引?在JavaFX 8中,我可以执行以下操作: 在Java 9中,作为模块化的一部分,JDK团队隐藏了并非公开的API(例如,所有以’com.sun’开头的软件包)如果我尝试在Java 9中进行编译,错误: 有什么正式的方法来获取TableView中的可见行?还有其他更好的解决方法吗? 更新:基于@ user4712734的解决

  • 有人能告诉我一种为javafx tableview实现确保可见例程的方法吗?我花了几个小时研究,但什么也没找到。谢谢

  • 本文向大家介绍knockout.js 可见,包括了knockout.js 可见的使用技巧和注意事项,需要的朋友参考一下 示例 可用于显示/隐藏DOM元素。与using类似if,不同之处在于visible仍然可以构建element和set display:none。            

  • 我有一个动态生成的流程图与jsPlumb。我将它保存到MySQL数据库,我需要一个不同的视图,没有任何编辑功能。 我知道如何删除所有部分,使它们不可编辑,但它总是显示连接点(左,右,顶部,底部) 如何使它们不可见,以便在没有连接点的情况下只看到连接器/箭头? 宽度和高度为1的矩形使其非常小,但仍然可见。如何使其不可见?:) thx so fa xQp

  • 当<code>JPanel</code>设置为不可见时,它是否仍然“可触摸”?在我的框架上有一个<code>JPanel</code>,面板上有按钮。如果我将面板设置为不可见,如果我按下按钮所在的位置(如果它可见),该按钮是否仍然有效? 我要求更好地理解,而不是实际上试图实现上面所说的内容。

  • 名为visibility的属性允许您隐藏视图中的元素。 您可以将此属性与JavaScript一起使用,以创建非常复杂的菜单和非常复杂的网页布局。 您可以选择使用visibility属性来隐藏仅在用户需要查看时显示的错误消息,或隐藏测验的答案,直到用户选择一个选项。 NOTE - 请记住,源代码仍将包含隐藏段落中的内容,因此您不应使用此代码隐藏敏感信息,如信用卡详细信息或密码。 visibility