首页 > 解决方案 > 如何在 JavaFX 中重置 ComboBox 滚动位置?

问题描述

我创建了一个带有长列表的组合框和一个按钮来反转该列表的字母顺序。

问题是,如果我向下滚动到列表的某个点,然后单击按钮以反转列表顺序,则列表正确反转并显示,但是组合框不是从顶部开始,而是从顶部开始从上一个滚动位置。

例如,如果我的列表是“A,B,C,...,Z”并且我滚动我的组合直到第 i 个元素,比如说 M,当我颠倒顺序时,组合中显示的列表是“Z , ..., C, B, A",但它不是从 Z 开始的:它仍然位于第 i 个元素处。

如何重置此“滚动问题”?

这是我的代码:


@FXML
private ImageView ascOrder, descOrder;

@FXML
private ComboBox<String> expNameCombo;

ascOrder.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
     @Override
     public void handle(MouseEvent event) {
        ascOrder.setVisible(false);
        descOrder.setVisible(true);
                
        //populate the combo in descending order
        expNameCombo.getItems().clear();
                
        for (Experiment exp : ClientHttps.getInstance().getExperiments().descendingSet()) {
            expNameCombo.getItems().add(exp.getName());
        }
                
    }
});
        
descOrder.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {             
    @Override
    public void handle(MouseEvent event) {
        descOrder.setVisible(false);
        ascOrder.setVisible(true);
                
        //populate the combo in ascending order
        expNameCombo.getItems().clear();
        for (Experiment exp : ClientHttps.getInstance().getExperiments()) {
            expNameCombo.getItems().add(exp.getName());
        }       
    }
});

标签: javafxscrollcomboboxreset

解决方案


推荐阅读