JavaFX инициализировать функцию и все там - PullRequest
0 голосов
/ 04 июня 2018

Это правильный способ найти 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.Где я должен написать эти вещи?Является ли функция инициализации приемлемой для этой потребности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...