Это правильный способ найти ContextMenu, setCellValueFactory, setRowFactory и т. Д. В initialize
функции?
public void initialize() {
ContextMenu contextMenu = new ContextMenu();
MenuItem cut = new MenuItem("Cut");
MenuItem copy = new MenuItem("Copy");
MenuItem paste = new MenuItem("Paste");
contextMenu.getItems().addAll(cut, copy, paste);
empId.setCellValueFactory(cellData -> cellData.getValue().employeeIdProperty().asObject());
empName.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
empLastName.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty());
//Show info when double clicked
employeeTable.setRowFactory(tv -> {
TableRow<Employee> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if(!row.isEmpty() && event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
Employee emp = row.getItem();
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getClassLoader().getResource("view/ViewEmployeeView.fxml"));
try {
loader.load();
} catch (IOException e) {
e.printStackTrace();
}
ViewEmployeeController viewEmployee = loader.getController();
viewEmployee.setText(emp.getFirstName(), emp.getLastName(), emp.getEmail(), emp.getPhoneNumber(), String.valueOf(emp.getSalary()), String.valueOf(emp.getManagerId()), String.valueOf(emp.getDepartmentId()));
Parent root = loader.getRoot();
Stage stage = new Stage();
stage.setTitle("View employee");
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(addBtn.getScene().getWindow());
stage.setScene(new Scene(root));
stage.show();
stage.setResizable(false);
} else if (event.getButton() == MouseButton.SECONDARY) {
row.setContextMenu(contextMenu);
}
});
return row;
});
Я не знаю, правильно ли я разъяснил свои мысли, но вот примерПоймите меня лучше: я создаю FXML с различными кнопками (с методами OnClicked), полями, метками и т. д. Затем я генерирую контроллер FXML, в котором также генерируются методы OnClicked.Но что если мне нужно добавить дополнительные вещи, такие как ContextMenu, rowFactory, создать динамические столбцы для TableView или добавить событие setOnAction, скажем, для MenuItem в ContextMenu.Где я должен написать эти вещи?Является ли функция инициализации приемлемой для этой потребности?