Вот некоторые идеи и примеры кода:
(1) Отображение состояния (да или нет) для ячейки столбца табличного представления - пример кода:
DataClass
может иметь свойство boolean
, определенное следующим образом:
private SimpleBooleanProperty status;
Ячейка табличного представления может быть отображена с помощью флажка, используя значения логических свойств состояния. Вот код, как может быть определен столбец табличного представления:
TableColumn<DataClass, Boolean> statusCol = new TableColumn<>("Status");
statusCol.setCellValueFactory(new PropertyValueFactory<DataClass, Boolean>("priority"));
statusCol.setCellFactory(column -> {
CheckBoxTableCell<DataClass, Boolean> cell = new CheckBoxTableCell<>();
cell.setAlignment(Pos.CENTER);
return cell;
});
Как я уже предлагал, вместо флажка можно отобразить цветное поле (используя класс формы, например Rectangle
из пакета javafx.scene.shape
).
(2) Классы java.util.Timer
и TimerTask
могут использоваться для периодического планирования и запуска задачи. В основном приложении после создания графического интерфейса таймер можно инициализировать следующим образом:
public class BuildMyAppGui {
//...
private void initiateTimer() {
Timer timer = new Timer();
long zeroDelay = 0L;
long period = 60000L; // 60 * 1000 = 1 min
// The timer runs once the first time
// and subsequently the scheduled task every one minute
timer.schedule(new DataChangedTask(), zeroDelay, period);
}
//...
}
Пример кода класса задач таймера:
public class DataChangedTask extends TimerTask {
@Override
public void run() {
// Code checks if there is a data change and refreshes the table data.
// This also refreshes the table column with check box -
// as checked or un-checked depending on the true/false value
// in the boolean property in DataClass.
}
}
Обратите внимание, что класс DataChangedTask
может иметь конструкторы, которые принимают ссылки на данные и получают доступ к другим ссылкам, как того требует приложение.