Java FX - 避免使用静态变量在控制器之间发送数据

时间:2017-05-04 12:13:59

标签: java javafx

我将一个控制器用于两个不同的目的。

  1. 添加客户
  2. 添加员工
  3. 为了使控制器兼具两种功能,我在控制器中使用了一个静态布尔值,并根据我想做的事情将其设置为true或false。它就像一个魅力,但在切换场景时使用静态变量而不是在控制器之间发送数据并不是很好(所以我还是被告知了)。

    编辑:(更多详情)17:40

    感谢所有回复,谢谢! 以下是有关该问题的更多详细信息:

    NewUserController类是具有静态布尔值的控制器。 AdminController类使用控制器添加员工,LogInController类使用它来注册客户。代码中看到的对象是SwitchScene类的一个实例。

    仅限相关代码:

    NewUserController(不是完整的代码)

    public static boolean isCustomer;
    
        public static void setCustomer(boolean customer) {
            isCustomer = customer;
        }
    
       if (isCustomer == true) {
                                                User customer = new Customer(stringFirstName,
                                                        stringLastName, IsMale, stringCountry, stringSSN, stringAddress, stringEmail, stringUserName, stringPassword);
                                                dbh.insertUser(customer, typeOfUser);
                                            } else if (isCustomer == false) {
    
                                                User customer = new Employee(stringFirstName,
                                                        stringLastName, IsMale, stringCountry, stringSSN, stringAddress, stringEmail, stringUserName, stringPassword);
    
                                                dbh.insertUser(customer, typeOfUser);
                                            }
    
    
                                            if (isCustomer == true) {
    
                                                sw.goToUnLogged(ae, "Login.fxml");
                                            }
    
                                            if (isCustomer == false) {
                                                sw.GoTo(ae, "Admin.fxml");
    
    ----------------------------------------------------------------------
    

    AdminController(非完整代码)

    @FXML
        private void newEmployee(ActionEvent ae) {
    
    
            NewUserController.setCustomer(false);
    
    
            sw.GoTo(ae, "NewUser.fxml");
    
    
    }
    

    LoginController(不是完整的代码)

    @FXML
        private void newUser(ActionEvent ae) {
            NewUserController.setCustomer(true);
    
            sw.goToUnLogged(ae, "NewUser.fxml");
        }
    

    SwitchScene(非完整代码)

    public void goToUnLogged(ActionEvent ae, String fxmlFile) {
    
            Node node = (Node) ae.getSource();
            Stage stage = (Stage) node.getScene().getWindow();
            FXMLLoader loader = new FXMLLoader(getClass().getResource("../view/" + "" + fxmlFile + ""));
            Parent root = null;
            try {
                root = loader.load();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Scene scene = new Scene(root);
            stage.setScene(scene);
    
        }
    

    我已查看您链接的其他问题,但我仍然无法使用它。那么,在这种情况下避免静态布尔值的最佳方法是什么?

    /彼得

0 个答案:

没有答案