我正在使用 java 中的 swing 为我的类(class)作业进行测验。我已经制作了我的主类,一个选项卡式框架,其中包含单独的 jpanels 作为选项卡,例如登录页面,并且我使用 sqlite 来获取我的数据。然而,我很难了解如何在我的登录 jpanel 和我的主类之间进行通信。
mainJFrame.addWindowListener(new WindowAdapter() {
public void windowActivated(WindowEvent arg0) {
LoginPanel loginEntry = new LoginPanel();
welcomePanel.add(loginEntry);
welcomePanel.setBounds(0,0,728,390);
//所以这里我想要一个 if 语句,以便在成功登录后,添加其他选项卡并可以看到。但如果您未登录,则无法使用。
tabbedPane.addTab("Quick Guide", null, quickGuidePanel, null);
tabbedPane.addTab("Examples", null, examplePanel, null);
tabbedPane.addTab("Run Quiz", null, runQuizPanel, null);
tabbedPane.addTab("Exams", null, examPanel, null);
tabbedPane.addTab("View Performance", null, viewPerfPanel, null);
tabbedPane.addTab("Settings", null, settingsPanel, null);
}
});
我尝试创建一个 getter 和 setter 并尝试 getSuccessfulLogin() 但这不起作用:(
谢谢
最佳答案
在应用程序中填充登录信息的好方法是单例模式。 例如:
public class AuthService {
private static AuthService myInstance;
private User currentUser;
...
private AuthService() {
// Constructor is private. The Object can only be instanciated by getInstance()
}
public static AuthService getInstance() {
if (myInstance == null) {
myInstance = new AuthService();
}
return myInstance;
}
public User getCurrentUser()
...
public void setLoggedInUser(User user)
...
public User login(String userName, String password)
...
}
通过静态 getInstance() 方法,您可以在应用程序中的任何位置获取完全相同的对象的实例,而无需通过所有构造函数或方法携带该对象。 您可以在那里保存所有与身份验证相关的数据,甚至可以保存一些执行登录工作的方法。 如果不存在成功登录的用户,则 getCurrentUser() 可能返回 null。
如果可以同时从多个客户端登录,您将需要在 AuthService 中为不同 session 保存不同的用户信息。
关于java - 在 Swing 面板之间传递信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777502/