Hey,
folgendes Problem, ich möchte in einer TableView bestimmte Zeilen farblich hervorheben. Es gibt zwar zahlreiche Internetbeispiele, aber diese funktional auf meine Anwendung zu übertragen, gelingt nicht. Ich wäre sehr dankbar, wenn dort jemand eine Lösung zu hätte.
Folgend mal der bisherige Code zur Orientierung:
folgendes Problem, ich möchte in einer TableView bestimmte Zeilen farblich hervorheben. Es gibt zwar zahlreiche Internetbeispiele, aber diese funktional auf meine Anwendung zu übertragen, gelingt nicht. Ich wäre sehr dankbar, wenn dort jemand eine Lösung zu hätte.
Folgend mal der bisherige Code zur Orientierung:
Java:
TableView <Date> mainCalendarTable = new TableView<>();
mainCalendarTable.prefHeightProperty().bind(primaryStage.heightProperty());
mainCalendarTable.prefWidthProperty().bind(primaryStage.widthProperty());
mainCalendarTable.setEditable(false);
TableColumn <Date, String> dateColumn = new TableColumn<>("DATE");
dateColumn.setCellValueFactory(new PropertyValueFactory <> ("date"));
dateColumn.setCellFactory(TextFieldTableCell.forTableColumn());
dateColumn.setSortable(false);
TableColumn <Date, String> user1Column = new TableColumn<>("USER_1");
user1Column.setCellValueFactory(new PropertyValueFactory <> ("user1"));
user1Column.setCellFactory(TextFieldTableCell.forTableColumn());
user1Column.setPrefWidth(100.0);
user1Column.setVisible(true);
user1Column.setSortable(false);
TableColumn <Date, String> user2Column = new TableColumn<>("USER_2");
user2Column.setCellValueFactory(new PropertyValueFactory <> ("user3"));
user2Column.setCellFactory(TextFieldTableCell.forTableColumn());
user2Column.setPrefWidth(100.0);
user2Column.setVisible(true);
user2Column.setSortable(false);
TableColumn <Date, String> user3Column = new TableColumn<>("USER_3");
user3Column.setCellValueFactory(new PropertyValueFactory <> ("user3"));
user3Column.setCellFactory(TextFieldTableCell.forTableColumn());
user3Column.setPrefWidth(100.0);
user3Column.setVisible(true);
user3Column.setSortable(false);
mainCalendarTable.getColumns().addAll(dateColumn, user1Column, user2Column, user3Column);
mainCalendarTable.setItems(getDate(user1));
mainCenter.getChildren().add(mainCalendarTable);
main.setCenter(mainCenter);
editableAll.setOnAction(new EventHandler <ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
if (mainCalendarTable.isEditable() == false) {
mainCalendarTable.setEditable(true);
} else {
mainCalendarTable.setEditable(false);
}
}
});
Scene mainScene = new Scene(main,400,400);
mainScene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(mainScene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
private ObservableList<Date> getDate(User user1) {
ObservableList <Date> dateList = FXCollections.observableArrayList();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyy");
int i = 0;
for (LocalDate date : dateList()) {
dateList.add(new Date(date.format(formatter), user1.getEntry()[i]));
i ++;
}
return dateList;
}
public List<LocalDate> dateList () {
LocalDate startDate = LocalDate.of(2020, 01, 01);
LocalDate endDate = LocalDate.of(2020, 12, 31);
List<LocalDate> dateList = dateFormTo(startDate, endDate);
return dateList;
}
private List<LocalDate> dateFormTo(LocalDate startDate, LocalDate endDate) {
return startDate.datesUntil(endDate)
.collect(Collectors.toList());
}
public static void main(String[] args) {
launch(args);
}
}