多个JFrame

时间:2010-02-22 10:43:27

标签: java swing jframe

使用netbeans创建一个java应用程序。我有两个jframe用于登录和主应用程序。我想要做的是在运行时加载登录jframe,然后在用户身份验证正确时加载主应用程序jframe。在主应用程序jframe已经加载之后,必须销毁登录jframe的实例。另外,我希望将来自登录jframe的用户信息传递给主应用程序jframe。我怎么实现这个?

2 个答案:

答案 0 :(得分:3)

我建议使用以下简单方法,即创建表示Login面板和主应用程序框架的类。在示例中,我创建了一个登录面板而不是一个框架,以允许它嵌入模态对话框中。

// Login panel which allows user to enter credentials and provides
// accessor methods for returning them.
public class LoginPanel extends JPanel {
  public String getUserName() { ... }

  public String getPassword() { ... }
}

// Main applicaiton frame, initialised with login credentials.
public class MainFrame extends JFrame {
  /**
   * Constructor that takes login credentials as arguments.
   */
  public MainFrame(String userName, String password) { ...}
}

// "Bootstrap" code typically added to your main() method.
SwingUtilities.invokeLater(new Runnable() {
  public void run() {
    LoginPanel loginPnl = new LoginPanel();

    // Show modal login dialog.  The code following this will
    // only be executed when the dialog is dismissed.
    JOptionPane.showMessageDialog(null, loginPnl);

    // Construct and show MainFrame using login credentials.
    MainFrame frm = new MainFrame(loginPnl.getUserName(), loginPnl.getPassword());
    frm.setVisible(true);
  }
});

答案 1 :(得分:1)

扩展JFrame以创建主框架。在此添加构造函数以接受用户信息。

从登录屏幕,当身份验证成功时,通过传递登录信息创建主框架的实例。在登录框架上调用dispose()并在主框架上调用setVisible(true)

MainFrame mainFrame = new MainFrame(userInput.getText());
this.dispose();
mainFrame.setVisible(true);