java - 在 Swing 面板之间传递信息?

标签 java swing user-interface

我正在使用 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/

相关文章:

在 JButton MouseClicked 中执行的 Java 类

java - JList 换行问题

java - 基于另一个表,使用卡住第一列对 JTable 进行排序

java - Java Swing 中 MouseMotionListener 的适当方法是什么?

c# - WPF 中的比例最小宽度

java - 在 Allure 报告中,如何为 TestNG 中的参数化测试中的每个数据集提供不同的严重性?

java - TransferHandler.canImport(TransferSupport) 在 Windows 上被重复调用,但在 Linux/Mac 上却没有被重复调用?

java - 使用构造函数将一个类传递给另一个类

java - 使用 Eclipse (Java) 创建 GUI

Java Mac OS X - 以编程方式计算屏幕高度,无需 Dock 高度