【问题标题】:javafx - delay beetwen key released and listview selecting celljavafx - 延迟beetwen键释放和listview选择单元格
【发布时间】:2018-07-09 11:06:44
【问题描述】:

我有一个与延迟 beetwen 键释放和列表视图选择单元格类似的问题。当释放键上/下时 firstListView 正在选择向下/向上单元格,在此之后 secondListView 做同样的事情但不是在同一时间。 我需要它们同步。 这是一个 gif(0 个专业人士):https://giphy.com/gifs/9zXCVgV5H6CEXdPrrL(不是超链接,因为它不是骗局或其他东西)。 这是我的代码:

AtomicInteger selectedIndex = new AtomicInteger();
firstListView.setOnKeyReleased(event -> {
            if (event.getCode() == KeyCode.UP || event.getCode() == KeyCode.DOWN) {
                selectedIndex.set(firstListView.getSelectionModel().getSelectedIndex());
                secondListView.getSelectionModel().select(selectedIndex.get());
            }

        });

谢谢!

【问题讨论】:

标签: java listview javafx


【解决方案1】:

您正在使用按键事件处理选择。但是,您不应为此依赖 ListView 的实现细节。改为在ListView 的选择模型中收听selectedIndex 属性:

@Override
public void start(Stage primaryStage) throws IOException {
    ListView<Integer> lv1 = new ListView<>();
    ListView<String> lv2 = new ListView<>();
    for (int i = 0; i < 26; i++) {
        lv1.getItems().add(i);
        lv2.getItems().add(Character.toString((char) ('a' + i)));
    }

    lv1.getSelectionModel().selectedIndexProperty().addListener((o, oldValue, newValue) -> {
        int index = newValue.intValue();
        if (index < 0) {
            lv2.getSelectionModel().clearSelection();
        } else {
            lv2.getSelectionModel().select(index);
        }
    });

    Scene scene = new Scene(new HBox(lv1, lv2));

    primaryStage.setScene(scene);
    primaryStage.show();
}

也许使用TableView 会是更好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多