我有一個組合框和一個表視圖。組合框項目用表格列名填充。我想要綁定comboBox項目選擇和表列排序。 示例:如果我從組合框的索引0處選擇項目說「名稱」,則對錶的第0列進行排序。 再次,如果我排序表中的一列,comboBox選擇的項目應更新與相應的列名稱。 現在我正在實現基於組合框項目選擇與下面的代碼的表列排序。在JavaFX中,綁定組合框項目和表列排序
private void bindComboBoxAndTableColumnSort() {
ComboBox combo = topComboBarController.getSortCombo();
combo.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0,
Number oldVal, Number newVal) {
System.out.println("oldVal = "+ oldVal + " and newVal = "+ newVal);
TableColumn sortColumn = null;
SortType st = null ;
sortColumn = table.getColumns().get(newVal.intValue()) ;
st = table.getColumns().get(newVal.intValue()).getSortType() ;
table.getSortOrder().clear();
if(sortColumn != null){
table.getSortOrder().add(sortColumn);
sortColumn.setSortType(SortType.ASCENDING);
}
}
});
}
如果有人可以分享一些演示代碼,這將是有幫助的。
感謝您的時間和建議。我可以採用這種方法,但這不是基於綁定。我想知道是否有辦法使用綁定來做到這一點? – Dil
我編輯了我的答案,嘗試一個。但我不建議它,因爲它只會觸發一次。您需要聽取訂單更改。 – thatsIch
請檢查您的上次編輯。它無論如何都不起作用。事實上,它在表格中引起了許多意想不到的行爲。如果可能,請在獨立代碼中檢查並重新編輯或刪除該更改,否則會混淆其他代碼。 – Dil