2017-02-07 3 views
2

I'am gettin Объект Admin в LoginController. Его не пусто, нет проблем. Когда я устанавливаю этот объект AdminController, он не работает. В моем инициализации syso результат, показывающий «null». Мне нужно использовать этот объект в другом контроллере. Используя swing, я делал это в конструкторах контроллера и качающих подрядчиках. Но я не знаю, как это сделать с помощью JavaFx. Извините за мой плохой английский. Но если вы посмотрите код, вы поймете меня.Контроллер JavaFx set Объект Другой контроллер

public class UserLoginController extends AbstractController { 

    @FXML 
    private Button joinBtn; 
    @FXML 
    private Button exitBtn; 
    @FXML 
    private Label statusLabel; 
    @FXML 
    private TextField userNo; 
    @FXML 
    private PasswordField password; 


    @FXML 
    void buttonEvent(ActionEvent event) { 

     if (joinBtn == event.getSource()) { 
      String userType = userNo.getText().substring(0, 2); 
      switch (userType) { 
      case "10": 
       Admin admin = DBContext.getInstance().admins().isUserExist(Integer.parseInt(userNo.getText()), password.getText()); 
       if(admin != null) { 
        final String fxml = "/educationManagement/view/AdminPanel.fxml"; 
        try { 
         FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml)); 
         Parent root = (Parent) loader.load(); 
         AdminController adminController = loader.getController(); 
         adminController.setAdmin(admin); 
         Scene scene = new Scene(root); 
         Stage stage = (Stage) ((Node)event.getSource()).getScene().getWindow(); 
         stage.setTitle(admin.getFirstName() + " " + admin.getLastName()); 
         stage.setScene(scene); 
         stage.show(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
         System.out.println("fuck"); 
        } 

       } else { 
        statusLabel.setText("Kullanıcı Adı veya Şifre Yanlış"); 
        userNo.setText(""); 
        password.setText(""); 
       } 
       break; 

      case "40": 

       break; 

      case "50": 

       break; 

      default: 
       statusLabel.setText("Kullanıcı Adı Bulunamadı"); 
       break; 
      } 

     } 
    } 
} 


public class AdminController implements Initializable{ 

    private Admin admin; 

    @FXML 
    private TableView<Student> studentTable; 

    @FXML 
    private Label firstNameLbl; 

    public Admin getAdmin() { 
     return admin; 
    } 

    public void setAdmin(Admin admin) { 
     this.admin = admin; 
    } 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 
     System.out.println(admin); 

    } 

} 

ответ

1

Метод инициализации вызывается при загрузке файла FXML, вы должны создать другой метод инициализации в AdminController, который будет делать все Initialize, что вам нужно с объектом администратора, и этот метод вызывается после вызова к сеттер:

AdminController adminController = loader.getController(); 
adminController.setAdmin(admin); 
adminController.initController(); 
+0

Большое вам спасибо Zoltanik. Я создаю метод загрузки в контроллере администратора. Я установил администратор, затем назовите загрузку. Теперь я могу показать информацию о пользователе в первой сцене компонента. –