我有一个类似的问题,释放了延迟的beetwen键,并且listview选择了单元格。当释放键向上/向下键时,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());
}
});
谢谢!
最佳答案
您正在使用关键事件来处理选择。但是,您不应为此依赖ListView
的实现细节。改用selectedIndex
的选择模型中的ListView
属性:
@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
会是更好的选择。