[英]JavaFX sorting tableview - issues using comparator and updating the tableview to the sorted list
我在尝试对JavaFX中的TableView进行排序时遇到很多错误。 该视图由表格和两个复选框组成,分别按状态(字母顺序)和ReferralDate(数字)对视图进行排序。
public class ReferralListCtrl implements Initializable {
@FXML
private TableView<ReferralListModel> referralListTable;
@FXML
private TableColumn<ReferralListModel, String> recievedDateColumn;
@FXML
private TableColumn<ReferralListModel, String> referredDateColumn;
@FXML
private TableColumn<ReferralListModel, String> layDaysColumn;
@FXML
private TableColumn<ReferralListModel, String> statusColumn;
@FXML
private TableColumn<ReferralListModel, String> assignedColumn;
@FXML
private TableColumn<ReferralListModel, String> referredFromColumn;
@FXML
private TableColumn<ReferralListModel, String> patientColumn;
@FXML
private TableColumn<ReferralListModel, String> referralCauseColumn;
@FXML
private TableColumn<ReferralListModel, String> referralIDColumn;
@FXML
private TableColumn<ReferralListModel, String> referralTypeColumn;
@FXML
private CheckBox sortByDateBtn;
@FXML
private CheckBox sortByStatusBtn;
@FXML
private Label searchLabelTest;
@FXML
private HBox sortHBox;
//If button is pressed
@FXML
public void searchButtonPressed(){
String sortLabel = "Valgte sortering:";
if (sortByDateBtn.isSelected()){
//control to see if buttons is detectable
sortLabel += "\nDato";
}
if (sortByStatusBtn.isSelected()){
SortedList<String> mySortedList = new SortedList(getReferralListData());
mySortedList.setComparator(new Comparator<ReferralListModel>(){
@Override
public int compare(ReferralListModel o1, ReferralListModel o2) {
//Two methods of comparing I have tried
return o1.compareToIgnoreCase(o2);
//return o1.getStatus().compareToIgnoreCase(o2.getStatus());
}
});
//updating the list
referralListTable.setItems(referralListData.sorted());
sortLabel += "\nstatus";
}
this.searchLabelTest.setText(sortLabel);
}
// Reference to the main application.
private MainApp mainApp;
/***
* The constructor. The constructor is called before the initialize() method.
*/
public ReferralListCtrl() {
}
//defining new lists that is sorted
private SortedList mySortedList;
private ObservableList<Comparator<ReferralListModel>> listComparators;
ObservableList<ReferralListModel> referralListData = FXCollections.observableArrayList();
/**
* Returns the data as an observable list of the referrals.
*
* @return
*/
public ObservableList<ReferralListModel> getReferralListData() {
return referralListData;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
recievedDateColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("recievedDate"));
referredDateColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("referredDate"));
layDaysColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("layDays"));
statusColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("status"));
assignedColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("assigned"));
referredFromColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("referredFrom"));
patientColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("patient"));
referralCauseColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("referralCause"));
referralIDColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("referralID"));
referralTypeColumn.setCellValueFactory(new PropertyValueFactory<ReferralListModel, String>("referralType"));
referralListData.add(new ReferralListModel("1/1-2019", "1/12-2019", "30", "Modtaget", "Alle", "Laegehus A",
"Hans 233492-1233", "Aarsag 1", "ICPC-kode", "A"));
referralListData.add(new ReferralListModel("12/1-2019", "12/1-2019", "0", "Visiteret", "Alle", "Laegehus B",
"Ruth 290506-1236", "Aarsag 1", "ICD10-kode", "B"));
referralListData.add(new ReferralListModel("2/1-2019", "2/1-2019", "29", "Modtaget", "Alle", "Laegehus C",
"Heinz 311200-9561", "Aarsag 1", "ICPC-kode", "C"));
referralListData.add(new ReferralListModel("4/1-2019", "1/1-2019", "27", "Modtaget", "Alle", "Laegehus D",
"Cornelia 290483-2096", "Aarsag 1", "ICPC-kode", "D"));
referralListData.add(new ReferralListModel("7/1-2019", "6/1-2019", "24", "Modtaget", "Alle", "Laegehus E",
"Werner 192835-1023", "Aarsag 1", "ICPC-kode", "E"));
referralListData.add(new ReferralListModel("20/1-2019", "19/1-2019", "0", "Visiteret", "Alle", "Laegehus F",
"Lydia 101039-5302", "Aarsag 1", "ICD10-kode", "F"));
referralListTable.setItems(getReferralListData());
}
如何修改比较器,以便按字母和数字排序?
如何将tableview更新为排序列表?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.