2017-02-07 156 views
2

我在LoginController中获取管理对象。它不是空的没有问题。当我设置这个对象AdminController它不工作。在我初始化显示“null”的syso结果。我需要在我的其他控制器中使用这个对象。使用swing我是在控制器构造函数和swing构造器中完成的。但我不知道如何用JavaFx做到这一点。对不起,我的英语不好。但如果你看代码,你会理解我。JavaFx控制器设置对象另一个控制器

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另一个init方法,将做到这一点,你需要与管理对象的所有初始化,并调用之后,调用此方法二传手:

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

非常感谢你Zoltanik。我在管理控制器中创建加载方法。我设置管理然后调用加载。现在我可以在组件场景中首次显示用户信息。 –

相关问题