I have a TableView thats populated by a MySQL table in my database. Each data item in the table has a priority (1/2/3). What I'm attempting to do is change the colour of a row based on the job's priority (red for 1, green for 3 etc).
Could I place the value of a SELECT statement that takes the priority for each row and place it into an array, a loop then runs through the array and changes the colour of each row? For example, if priority == 3, colour column red? Would I need to do this with CSS?
Here is the code for populating the table view currently (Based on James_D comment/advice);
public void UserGUI(Connection connection) throws SQLException {
user = new User();
privID = user.getPrivID(connection);
dataAccessor = new JobDataAccessor();
deleteButton = new Button("Delete Job");
addButton = new Button("Add Job");
deleteButton.setMinWidth(100);
addButton.setMinWidth(100);
jobTable = new TableView<>();
TableColumn<Job, String> caseNumberCol = new TableColumn<>("CaseNO");
caseNumberCol.setCellValueFactory(new PropertyValueFactory<>("caseNumber"));
TableColumn<Job, String> caseNotesCol = new TableColumn<>("Case Notes");
caseNotesCol.setCellValueFactory(new PropertyValueFactory<>("caseNotes"));
TableColumn<Job, Date> dateCreatedCol = new TableColumn<>("Date Created");
dateCreatedCol.setCellValueFactory(new PropertyValueFactory<>("dateCreated"));
TableColumn<Job, Date> deadlineDateCol = new TableColumn<>("Deadline Date");
deadlineDateCol.setCellValueFactory(new PropertyValueFactory<>("deadlineDate"));
TableColumn<Job, String> priorityCol = new TableColumn<>("Priority");
priorityCol.setCellValueFactory(new PropertyValueFactory<>("prioritySetting"));
TableColumn<Job, String> completedCol = new TableColumn<>("Completed (Y/N)");
completedCol.setCellValueFactory(new PropertyValueFactory<>("completedStatus"));
jobTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
jobTable.getColumns().addAll(caseNumberCol, caseNotesCol, dateCreatedCol, deadlineDateCol, priorityCol,
completedCol);
jobTable.setMinWidth(700);
if (privID < 20) {
String query = "SELECT * FROM progdb.adamJobs";
jobTable.getItems().addAll(dataAccessor.getJobList(connection, query));
} else if (privID > 20) {
String query = "SELECT * FROM progdb.kitJobs";
jobTable.getItems().addAll(dataAccessor.getJobList(connection, query));
}
gPaneMain = new GridPane();
gridpane1 = new GridPane();
primaryStage = new Stage();
scene = new Scene(gPaneMain, 900, 600);
gPaneMain.setAlignment(Pos.CENTER);
gridpane1.setAlignment(Pos.CENTER);
gPaneMain.setGridLinesVisible(true);
gridpane1.setGridLinesVisible(true);
gPaneMain.setVgap(10);
gridpane1.setVgap(10);
gridpane1.setHgap(10);
GridPane.setHalignment(jobTable, HPos.CENTER);
gPaneMain.add(jobTable, 0, 0);
GridPane.setHalignment(gridpane1, HPos.CENTER);
gPaneMain.add(gridpane1, 0, 1);
GridPane.setHalignment(addButton, HPos.CENTER);
gridpane1.add(addButton, 1, 0);
GridPane.setHalignment(deleteButton, HPos.CENTER);
gridpane1.add(deleteButton, 2, 0);
primaryStage.getIcons().add(sdcLogo);
scene.getStylesheets().add("Style.css");
primaryStage.setTitle("Logged In As: " + username);
primaryStage.setScene(scene);
primaryStage.show();
And the code for the model class (Based on James_D comment/advice);
public class Job {
private String caseNumber;
private String caseNotes;
private String dateCreated;
private String deadlineDate;
private int prioritySetting;
private String completedStatus;
public String getCaseNumber() {
return caseNumber;
}
public void setCaseNumber(String caseNumber) {
this.caseNumber = caseNumber;
}
public String getCaseNotes() {
return caseNotes;
}
public void setCaseNotes(String caseNotes) {
this.caseNotes = caseNotes;
}
public String getDateCreated() {
return dateCreated;
}
public void setDateCreated(String dateCreated) {
this.dateCreated = dateCreated;
}
public String getDeadlineDate() {
return deadlineDate;
}
public void setDeadlineDate(String deadlineDate) {
this.deadlineDate = deadlineDate;
}
public int getPrioritySetting() {
return prioritySetting;
}
public void setPrioritySetting(int prioritySetting) {
this.prioritySetting = prioritySetting;
}
public String getCompletedStatus() {
return completedStatus;
}
public void setCompletedStatus(String completedStatus) {
this.completedStatus = completedStatus;
}
public Job(String caseNumber, String caseNotes, String dateCreated, String deadlineDate, int prioritySetting, String completedStatus) {
setCaseNumber(caseNumber);
setCaseNotes(caseNotes);
setDateCreated(dateCreated);
setDeadlineDate(deadlineDate);
setPrioritySetting(prioritySetting);
setCompletedStatus(completedStatus);
}