Управление checkbox'ом в listView. JavaFX

335
26 ноября 2016, 19:18

Добрый день. Начал изучать JavaFX. Не могу разобраться как можно убирать/добавлять признак selected с чекбоксов в listView, на текущий момент могу только получить, то что выбрал пользователь. Вот кусок кода, который использовался

listView.setCellFactory(CheckBoxListCell.forListView(new Callback<String, ObservableValue<Boolean>>() {
    @Override
    public ObservableValue<Boolean> call(String item) {
        BooleanProperty observable = new SimpleBooleanProperty();
        observable.addListener((obs, wasSelected, isNowSelected) ->
                        System.out.println("CheckBox для " + item + " изменен с " + wasSelected + " в " + isNowSelected)
        );
        return observable;
    }
}));
Answer 1

То, чем вы параметризовываете свой список, должен содержать признак того, что айтем выбран или нет. Вот простой пример, который демонстрирует данное поведение.

ListView < MyItem > listView = new ListView < > ();
listView.setCellFactory(p - > new ListCell < MyItem > () {
    private CheckBox checkBox = new CheckBox();
    @Override
    protected void updateItem(MyItem item, boolean empty) {
        super.updateItem(item, empty);
        if (item != null && !empty) {
            checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
                item.setSelected(newValue);
                System.out.println("CheckBox для " + item + " изменен с " + oldValue + " в " + newValue);
            });
            checkBox.setText(item.getView());
            setGraphic(checkBox);
        } else {
            setGraphic(null);
        }
    }
});

и сам класс MyItem

public class MyItem {
    private String view;
    private boolean isSelected;
    public MyItem(String view) {
        this(view, false);
    }
    public MyItem(String view, boolean isSelected) {
        this.view = view;
        this.isSelected = isSelected;
    }
    //getters and setters
}
READ ALSO
Как задать шрифт в RecyclerAdapter

Как задать шрифт в RecyclerAdapter

Как установить шрифт для Textview из assets/font ?

269
Сгладить линию графика

Сгладить линию графика

Использую библиотеку XChart от knownЕсли кто то пользовался данной библиотекой подскажите, какой метод или какая константа отвечает за сглаживания...

261
Воспроизведение потокового видео Java

Воспроизведение потокового видео Java

Доброго времени сутокХочу получить потоковое видео в небольшом Java-приложении, организованное с использованием swing

628
Потокобезопасный singleton

Потокобезопасный singleton

Вот потокобезопасный singleton:

299