如何在Swing中处理登录用户

时间:2014-09-24 17:53:41

标签: java swing code-injection

我有一个登录对话框,当有人打开程序时可以看到它,并且它有登录名/密码,如果您的登录正确,JFrame将可见并且Dialog隐藏/处置......

在我的情况下,我使用一种方法将用户发送到JFrame

的LoginDialog:

if(loginTrue) {
  MainFrame mf = new MainFrame();
  mf.setLoggedUser(User);
  mf.setVisible(true);
}

大型机:

public void setLoggedUser(User user) {
  this.user = user;
}
好吧,好吧!

但是我的愚蠢想法是MVC做了很多.class,它代表了CardLayout的不同JPanel,当程序加载时,它构造了所有的panelClasses1到10,在CardLayout中

所以我必须为所有类添加setLoggedUser(User user)

并且做:

panel1.setLoggedUser
panel2.setLoggedUser
panel3.setLoggedUser
panel4.setLoggedUser
panel5.setLoggedUser
panel6.setLoggedUser
...

有没有办法更改和删除所有这些代码并使用类似于@Inject

的内容

2 个答案:

答案 0 :(得分:0)

如果只有一个登录用户,您可以在一个地方声明变量用户,例如就像MainFrame类中的静态变量一样。或者,如果可以有更多登录用户,您可以定义MainFrame集合以获得更好的界面。

答案 1 :(得分:0)

如果您想要更好的架构外观Java身份验证和授权服务(JAAS):

http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/JAASRefGuide.html

如果你不是在编写一个生产应用程序,这可能会过度杀戮,但是如果它将被发布到生产环境中,我会使用类似的东西。