gpt4 book ai didi

java - 如何使 JavaFX ListView 中的前 2 行不可选择

转载 作者:行者123 更新时间:2023-12-01 22:38:35 25 4
gpt4 key购买 nike

如果我使用playList.getSelectionModel().select(1) - 突出显示的选择将是播放列表的第二行。如果我使用 playList.getSelectionModel().select(-1) 来选择无行(如 StackOverflow 上其他地方的建议),则将选择第一行。有谁知道为什么这不起作用?我希望 ListView 的前两行永远没有资格被选择。

我正在使用 JavaFX-8。

public class AudioPlayerFXMLController implements Initializable {

@FXML
private ListView playList;
private static ObservableList<Object> playListItems;
private static final String NEW_PLAYLIST = "New PlayList";
private static final String FRIEND_PLAYLIST = "Friend's PlayList";

@Override
public void initialize(URL url, ResourceBundle rb) {

playListItems = FXCollections.observableArrayList();
playListItems.add(NEW_PLAYLIST);
playListItems.add(FRIEND_PLAYLIST);

playList.setItems(FXCollections.observableList(playListItems));


playList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> list) {
return new ImageCell();
}
});

playList.getSelectionModel().select(-1);

}

static class ImageCell extends ListCell<String> {

@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);

if ((this.getIndex() == 0) || (this.getIndex() == 1)) {
ImageView addSymbol;
addSymbol = ImageViewBuilder.create().image(new Image("/images/ic_add_grey600_15dp.png")).build();
addSymbol.fitHeightProperty();
setText(item);
setGraphic(addSymbol);

} else {
setText(null);
setGraphic(null);
}
}

}

}

最佳答案

根据您使用的 jdk8 的确切(更新)版本,这可能是 RT-25679 的修复程序。 (在 RT-38517 中部分恢复)据我所知,一般没有公共(public) API 来禁用 Collection View 的自动聚焦/选择。只有 ListView 在其属性中具有禁用默认行为的条目(未记录!请注意,它们可以在不通知的情况下进行更改)禁用默认行为

// disable selecting the first item on focus gain - this is
// not what is expected in the ComboBox control (unlike the
// ListView control, which does this).
listView.getProperties().put("selectOnFocusGain", false);
// introduced between 8u20 and 8u40b7
// with this, testfailures back to normal
listView.getProperties().put("selectFirstRowByDefault", false);

关于java - 如何使 JavaFX ListView 中的前 2 行不可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com