2010-02-22 4 views
2

im создание приложения Java с netbeans. У меня есть два jframes для входа и основного приложения. то, что я хочу сделать, - загрузить загрузочный jframe во время выполнения, а затем загрузить основной jframe приложения, когда аутентификация пользователя верна. экземпляр jframe входа должен быть уничтожен после того, как основное приложение jframe уже загружено. Кроме того, я хочу, чтобы информация пользователя из логина jframe передавалась в основное приложение jframe. как это сделать?Несколько JFrames

+0

Возможно, вы захотите использовать JDialog вместо JFrame для окна входа в систему. – Kylar

ответ

1

Расширение JFrame для создания основной рамы. Добавьте конструктор в это, чтобы принять пользовательскую информацию.

На экране входа в систему, когда аутентификация завершается успешно, создайте экземпляр основного кадра, передав информацию для входа. Invoke dispose() в кадре входа и вызовите setVisible(true) на основной фрейм.

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

не this.dispose() также уничтожить mainFrame? – mixm

+0

Этот фрагмент кода должен находиться внутри рамки входа. –

+0

да, но экземпляр мейнфрейма найден в фрейме входа – mixm

3

Предлагаю следующий простой подход, с помощью которого вы создаете классы для представления панели входа и основного фрейма приложения. В примере я создал панель входа, а не фрейм, чтобы он мог быть встроен в модальный диалог.

// 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); 
    } 
});