拖动时增加TableRow的高度

时间:2016-08-10 02:53:29

标签: java javafx scenebuilder

我正在通过SceneBuilder开发JavaFX应用程序,我正在尝试为TableView添加功能。我当前的任务是允许用户在拖动时拖动和增加每个TableRow的高度。从本质上讲,我试图让它像Excel一样运作。

Java代码

    tv.setRowFactory(t -> {

        TableRow tr = new TableRow();
        tr.setPrefHeight(54);

        tr.setOnMouseDragged(event -> {
            tr.setMinHeight(event.getY());
        });

        return tr;

    });

我在拖拽上测试了getY()函数,看到它在屏幕上向下移动时反复增加。

我试图找到一种方法来做到这一点,但我找不到任何线索。如果你有一些关于所需方法的文档的链接,那也很好。

此外,如果SceneBuilder具有内置方式以允许在TableView中使用此功能,那么也可以使用。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

table.setRowFactory(t -> {
            final TableRow tr = new TableRow();
            final double prefHeight = 54;
            tr.setPrefHeight(prefHeight);

            tr.setOnMouseDragged(event -> {
                final double newHeight = event.getY();
                if(newHeight < prefHeight) {
                    return;
                }
                tr.setPrefHeight(newHeight);
                tr.autosize();
            });

            return tr;

        });