Java 如何在Swing中处理已登录的用户

Java 如何在Swing中处理已登录的用户,java,swing,code-injection,Java,Swing,Code Injection,我有一个登录对话框,当有人打开程序时,它是可见的,它有登录名/密码,如果您的登录是正确的,JFrame将是可见的,对话框隐藏/释放 现在在我的例子中,我使用一种方法将用户发送到JFrame 罗金迪亚洛: if(loginTrue) { MainFrame mf = new MainFrame(); mf.setLoggedUser(User); mf.setVisible(true); } 及 大型机: public void setLoggedUser(User user) {

我有一个登录对话框,当有人打开程序时,它是可见的,它有登录名/密码,如果您的登录是正确的,JFrame将是可见的,对话框隐藏/释放

现在在我的例子中,我使用一种方法将用户发送到JFrame

罗金迪亚洛:

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

大型机:

public void setLoggedUser(User user) {
  this.user = user;
}
好的,没关系

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

因此,我必须为所有类添加
setLoggedUser(User)

并且做:

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

是否有方法更改和删除所有这些代码,并使用类似于@Inject的东西?如果只有一个登录用户,您可以在一个地方声明变量user,例如,像类MainFrame中的静态变量一样。或者,如果可以有更多的登录用户,您可以定义一组大型机以获得更好的界面。

如果您想要更好的体系结构,请查看Java身份验证和授权服务(JAAS):

如果您不编写生产应用程序,这可能会有点过分,但如果它将被发布到生产环境中,我会使用类似的方法