一直向下滚动后,JavaFX TreeView 跳到顶部

问题描述

每当我一直向下滚动 TreeView 时,它出于某种原因跳回到开头。

这是我的 fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TreeView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefheight="720.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl.gieted.tiMetable.client.javafx.controllers.GroupSelectionController">
   <Text layoutX="46.0" layoutY="77.0" stroke="BLACK" strokeType="OUTSIDE" strokeWidth="0.0" text="Wybierz grupę:" wrappingWidth="395.849609375" AnchorPane.leftAnchor="46.0" AnchorPane.topAnchor="39.2314453125">
      <font>
         <Font size="35.0" />
      </font>
   </Text>
   <TreeView fx:id="tiMetableSelectionTree" layoutX="64.0" layoutY="138.0" prefheight="537.0" prefWidth="316.0" showRoot="false" AnchorPane.bottomAnchor="45.0" AnchorPane.leftAnchor="64.0" AnchorPane.topAnchor="138.0" />
   <Button layoutX="1165.0" layoutY="650.0" mnemonicParsing="false" onAction="#onNextButtonClicked" prefheight="24.0" prefWidth="66.0" text="Dalej" AnchorPane.bottomAnchor="45.0" AnchorPane.rightAnchor="49.0" />
</AnchorPane>

还有我的控制器

package pl.gieted.tiMetable.client.javafx.controllers;

import javafx.beans.value.changelistener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import pl.gieted.tiMetable.client.tiMetable.TiMetableService;
import pl.gieted.tiMetable.client.tiMetable.options.TiMetableOption;

import javax.inject.Inject;
import javax.swing.event.ChangeEvent;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import java.util.stream.Collectors;

public class GroupSelectionController implements Initializable {
    private final TiMetableService tiMetableService;

    @FXML
    private TreeView<TiMetableOption> tiMetableSelectionTree;

    @Inject
    public GroupSelectionController(TiMetableService tiMetableService) {
        this.tiMetableService = tiMetableService;
    }

    @Override
    public void initialize(URL location,ResourceBundle resources) {
        tiMetableSelectionTree.setCellFactory(tree -> new TreeCell<>() {

            @Override
            protected void updateItem(TiMetableOption item,boolean empty) {
                if (item != null) {
                    setText(item.getName());
                }
            }
        });


        try {
            List<TreeItem<TiMetableOption>> options = tiMetableService.getRootList().stream().map(TreeItem::new).collect(Collectors.toList());
            TreeItem<TiMetableOption> root = new TreeItem<>();
            root.getChildren().addAll(options);
            root.setExpanded(true);
            tiMetableSelectionTree.setRoot(root);
        } catch (IOException e) {
            e.printstacktrace();
        }
    }

    public void onNextButtonClicked() {

    }
}

谁能告诉我它为什么会发生以及如何让它停止?

Here's a video footage of this behavior

这是一个非常基本的用途,所以我不知道为什么会发生这种情况

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)