2014-02-21 3 views
-1

Я сделал некоторые основные настольные приложения, используя Java Swing. Однако я хочу использовать свои навыки для разработки более сложного приложения, которое включает аутентификацию пользователя. Я хочу иметь окно открытия, которое будет содержать JTextField s, чтобы принять имя пользователя и пароль пользователя. При успешной аутентификации (проверка данных пользователя в базе данных) я хочу, чтобы появилось новое окно, содержащее некоторую информацию о пользователе. Как я могу добиться этого эффекта нескольких окон с помощью Swing? Спасибо!Многооконное приложение с Java Swing

+1

Что вы пытались и с какой проблемой вы сталкиваетесь? –

+1

Похоже, вам нужно создать пользовательский диалог для выполнения того, что вы хотите. JDialog должен быть полезен или использовать JInternalFrame в JDesktopPane. Они также являются хорошими решениями. –

+1

Используйте диалоговые окна для имени пользователя и пароля с кнопкой внизу, чтобы отправить их. – Shrey

ответ

2

Процитировать Синий Питер: «Вот один, который я сделал раньше». Я реализовал его как JPanel, а затем встроил его в JDialog в методе main. Обратите внимание, что есть крючок, чтобы поле пароля получало фокус при первом отображении диалога.

class LoginPanel extends JPanel { 
    private final JTextField userNameTxtFld; 
    private final JPasswordField passwordFld; 

    public LoginPanel() { 
     super(new GridBagLayout()); // GridBagLayout: Not everyone's bag. 

     this.userNameTxtFld = new JTextField(12); 
     this.passwordFld = new JPasswordField(12); 

     userNameTxtFld.setText(System.getProperty("user.name")); 

     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.anchor = GridBagConstraints.WEST; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.insets = INSETS; 
     gbc.ipadx = 0; 
     gbc.ipady = 0; 
     gbc.weightx = 0.0; 
     gbc.weighty = 0.0; 
     gbc.gridx = 0; 
     gbc.gridy = 0; 

     int row = 0; 
     addLabelledComponent("User Name:", userNameTxtFld, this, gbc, 0, row++); 
     //noinspection UnusedAssignment 
     addLabelledComponent("Password:", passwordFld, this, gbc, 0, row++); 
    } 

    private boolean gainedFocusBefore; 

    void gainedFocus() { 
     if (!gainedFocusBefore) { 
      gainedFocusBefore = true; 
      passwordFld.requestFocusInWindow(); 
     } 
    } 

    String getUserName() { 
     return userNameTxtFld.getText(); 
    } 

    String getPassword() { 
     return new String(passwordFld.getPassword()); 
    } 

    void reset() { 
     passwordFld.setText(""); 
    } 

    public static void main(String[] args) { 
     final LoginPanel pnl = new LoginPanel(); 
     JOptionPane op = new JOptionPane(pnl, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); 
     JDialog dlg = op.createDialog("Login"); 
     dlg.addWindowFocusListener(new WindowFocusListener() { 
      @Override 
      public void windowGainedFocus(WindowEvent e) { 
       pnl.gainedFocus(); 
      } 

      @Override 
      public void windowLostFocus(WindowEvent e) { 
      } 
     }); 
     dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
     dlg.setVisible(true); 
     System.exit(0); 
    } 
} 
2
  1. Создать JDialog, который запрашивает детали пользователя.
  2. Показать диалог.
  3. Получить учетные данные из диалогового окна *.
  4. Аутентификация.
  5. Создайте JFrame для вашего приложения.
  6. Показать раму.

* Не проверяйте подлинность в диалоговом окне, просто держите свой пользовательский интерфейс в выполнении пользовательского интерфейса.

Смежные вопросы