그래서 다음이 있습니다 ListView
.
ObservableList<String> numList = FXCollections.observableArrayList(
"1","2","3"
);
ListView
사용자가 ComboBox
이전에 선택한 항목을 기반으로 항목을 변경할 수 있기를 원합니다 .
사용자가 내가 가지고있는 기본값 3 개 대신 7 개 항목을 원한다고 가정 해 보겠습니다. 그러면 코드가 나타납니다.
ObservableList<String> numList = FXCollections.observableArrayList(
"1","2","3","4","5","6","7"
);
이 작업을 수행하는 방법이 있습니까? 아니면 여러 ListView
s 를 만들고 사용자 입력에 따라 필요한 것을 사용해야합니까?
동일한 ListView
. items
목록 을 바꿀 필요도없고 기존 항목 만 수정할 수 있습니다.
BTW : Integer
이 경우 유형 매개 변수로 사용 하는 것이 좋습니다 .
ComboBox<Integer> comboBox = new ComboBox<>(FXCollections.observableArrayList(1, 3, 5, 7));
ObservableList<Integer> numList = FXCollections.observableArrayList();
ListView<Integer> listView = new ListView<>(numList);
ChangeListener<Integer> listener = (observable, oldCount, newCount) -> {
int size = numList.size();
int newSize = newCount == null ? 0 : newCount;
if (size > newSize) {
numList.subList(newSize, size).clear();
} else {
for (int i = size+1; i <= newSize; i++) {
numList.add(i);
}
}
};
comboBox.valueProperty().addListener(listener);
// in case you assigned a initial value before
listener.changed(null, null, comboBox.getValue());
그러나 다음을 ListView
사용하여 기존 항목 목록을 새 항목 목록으로 바꿀 수도 있습니다.setValue
ListView<String> listView = new ListView<>();
ComboBox<ObservableList<String>> comboBox = new ComboBox<>(...);
ChangeListener<ObservableList<String>> listener = (observable, oldList, newList) -> {
if (newList == null) {
newList = FXCollections.emptyObservableList();
}
listView.setItems(newList);
};
comboBox.valueProperty().addListener(listener);
// in case you assigned a initial value before
listener.changed(null, null, comboBox.getValue());
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다