2016-11-11 64 views
0

我正在学习Java和JavaFX。我有了一些ComboBox组件,如果登录为admin我的问题是,应用程序填充Combobox与系统变量在启动时,如果user日志中,然后我得到一个空指针和应用犯规是唯一可见的应用程序启动,因为ComboBox不存在..当登录应用程序admin正确启动。这是我如何努力使其工作。处理JavaFX中的不同用户

private void loginpressed(ActionEvent event) throws IOException 

{ 

    if (BCrypt.checkpw(userId.getText() + passwordfield.getText(), passwordhashuser)) 
     { 
    Parent root = FXMLLoader.load(getClass().getResource("LaserControllerUserUI.FXML")); 
    Scene home_page_scene = new Scene(root); 
    Stage app_stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); 
    app_stage.setScene(home_page_scene); 
    app_stage.show(); 

     } 
    else if (BCrypt.checkpw(userId.getText() + passwordfield.getText(), passwordhashadmin)) 
    { 
     Parent root = FXMLLoader.load(getClass().getResource("LaserControllerUI.FXML")); 
     Scene home_page_scene = new Scene(root); 
     Stage app_stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); 
     app_stage.setScene(home_page_scene); 
     app_stage.show(); 
    } 
    else{ 
     errorMessage.setText("Login Incorrect!"); 
     System.out.print("false");} 
} 

所以我有两个独立的FXML取决于谁登录。我该如何处理?

+1

也许,只是也许,这是不是你在做什么是一个好主意。这也是一个非常激烈的演员....我的意思是非常激烈,这是相当令人不安,甚至有点冒犯! – Snickers3192

+0

是的,我认为它不正确。你将如何处理它? –

+0

不要在Java中使用下划线。遵循约定。这些惯例有时在许多不同的框架中都有依赖。 – Snickers3192

回答

0

一般情况下,你应该避免的方式在它需要管理权限,如果确实需要这些特权,你需要给这个反馈给用户,或强制执行此条件下你的应用程序,你可以Google如何在Microsoft的此链接中执行此操作:https://technet.microsoft.com/en-us/library/ff431742.aspx。请注意,您可以通过Java中的系统属性访问当前用户,并且您还可以基于用户保存属性(如果有帮助的话)。

这是您铸造这样做完全没有必要。如果我是你,我会在MVC for Java上查找一些GUI教程。一旦你学会了这种模式,你将有一个灯泡的时刻,一切都会变得有意义。有这种模式的变化,你应该学习主要的模式。

不遵循任何GUI模式会导致你极大的痛苦和并发症。如果人们知道这种模式,我估计超过100,000个关于SO的问题将不存在。这包括你的问题。 GUI和功能应该完全分开。你的问题只是:我如何获得所有用户的列表,这将是一个重复的,不需要问。

+0

感谢您的回答。 MVC对我来说是新的,所以我会去阅读。关于用户。我不是指Windows用户,我的应用程序上有一个登录页面,还有两个预配置的用户在输入凭据后应该看到不同的屏幕。我的应用程序无需管理员权限即可运行。 –

0

我会用一个FXML文档。如果他们有几乎相同的组件,我会在用户登录后设置组件的位置和可见性。设置为可见的应取决于用户帐户类型。