Я новичок в JavaFx, или, если быть более точным, я не знаю, как Google для того, что я хочу. В настоящее время я работаю в проекте Gradle, используя JavaFx в качестве GUI. Я определил таблицу и пару столбцов таблицы. В одном столбце таблицы я заполняю его флажками. Опять же, я не знаю термины, так как я просто скопировал их из inte rnet.
. Так я определяю столбец таблицы.
@FXML
private TableColumn<Section, Boolean> enrollStatus;
Существует observableList. Из того, что я знаю, он каким-то образом может магически связываться с tableView.
private ObservableList<Section> observableSections = FXCollections.observableArrayList();
Я инициализирую в своем классе контроллера так:
@FXML
public void initialize() {
courseCode.setCellValueFactory(new PropertyValueFactory<Section, String>("courseCode"));
sectionCode.setCellValueFactory(new PropertyValueFactory<Section, String>("sectionCode"));
courseName.setCellValueFactory(new PropertyValueFactory<Section, String>("courseName"));
instructorName.setCellValueFactory(new PropertyValueFactory<Section, String>("instructorName"));
enrollStatus.setCellValueFactory(new PropertyValueFactory<Section, Boolean>("enrollStatus"));
enrollStatus.setCellFactory(CheckBoxTableCell.forTableColumn(enrollStatus));
tableView.setEditable(true);
enrollStatus.setEditable(true);
tableView.setItems(observableSections);
}
В контроллере также есть функция, которая после Я заполняю tableView с помощью Section, он будет добавлять прослушиватель к каждому флажку.
void populateSectionsList(boolean addListener, List<Course> courses) {
observableSections.clear();
for (Course course : courses) {
List<Section> sections = course.getSections();
if (addListener) {
for (Section section : sections) {
if (section.getEnrollStatus() == false) { //if true, listener added already
section.enrollStatusProperty().addListener(
(observable, oldvalue, newvalue) -> {
if (oldvalue == false && newvalue == true) {
enrolledSections.add(section);
if (oldvalue == true && newvalue == false)
for (int i = 0; i < enrolledSections.size(); ++i)
if (enrolledSections.get(i).getEnrollStatus() == false) {
enrolledSections.remove(i);
updateTimeTable();
}
}
);
}
}
}
observableSections.addAll(sections);
}
}
До этого момента все флажки в tableView динамически размещались при запуске, что означает, что они не находятся в xml файл. Поэтому я не могу выполнить следующую задачу в модульном тесте:
@Test
public void testbuttonSfqEnrollCourse() {
clickOn("#tabMain");
clickOn("#buttonSearch");
clickOn("#tabSfq");
clickOn("#buttonSfqEnrollCourse");
}
, поэтому моя проблема заключается в том, как выполнить кодирование в тестовом файле таким образом, чтобы после нажатия «test» в Gradle Task он выскакивал окно и автоматически установить флажки в табличном представлении?