2013-08-23 33 views
7

Mam własne okno dialogowe z dwoma polami tekstowymi, dwoma JLabel i "ok" JButton. Wyskakujące okno to okno logowania. Okno działa idealnie Chcę tylko wiedzieć, w jaki sposób mogę dodać "Anuluj" JButton, aby użytkownik mógł anulować logowanie.JOptionPane z wprowadzoną nazwą użytkownika i hasłem

Oto mój kod do okna:

public Hashtable<String, String> login(JFrame frame) { 
    Hashtable<String, String> logininformation = new Hashtable<String, String>(); 

    JPanel panel = new JPanel(new BorderLayout(5, 5)); 

    JPanel label = new JPanel(new GridLayout(0, 1, 2, 2)); 
    label.add(new JLabel("E-Mail", SwingConstants.RIGHT)); 
    label.add(new JLabel("Password", SwingConstants.RIGHT)); 
    panel.add(label, BorderLayout.WEST); 

    JPanel controls = new JPanel(new GridLayout(0, 1, 2, 2)); 
    JTextField username = new JTextField(); 
    controls.add(username); 
    JPasswordField password = new JPasswordField(); 
    controls.add(password); 
    panel.add(controls, BorderLayout.CENTER); 

    JOptionPane.showMessageDialog(frame, panel, "login", JOptionPane.QUESTION_MESSAGE); 

    logininformation.put("user", username.getText()); 
    logininformation.put("pass", new String(password.getPassword())); 
    return logininformation; 
} 

Jeśli jest to potrzebne, tutaj znajduje się zrzut ekranu z okna logowania:

Login pop up

Jeśli chcesz kliknij na „x "w prawym rogu też się zamyka. Ale chcę anulować JButton, jeśli jest to łatwe.

  • Dziękuję za pomoc

Odpowiedz

6

Musisz użyć okna dialogowego rodzaj potwierdzenia OK, CANCEL.

JOptionPane.showConfirmDialog(
      frame, panel, "login", JOptionPane.OK_CANCEL_OPTION); 
+0

To jest moja odpowiedź ^^ Dziękuję bardzo! – Gerret

+1

Nie ma za co. +1 do ciebie też. –

0

Można wykorzystać dispose() funkcję na JFrame zamknąć ramkę po kliknięciu na przycisku. Podoba Ci się to

jButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e){ 
     frameName.dispose(); 
    } 
}); 
+0

Tak, to dobry początek, ale mam większy problem, że nie mogę dodać drugiego przycisku i/lub nie wiem gdzie! – Gerret

0

Trzeba użyć JOptionPage.showOptionDialog() który umożliwia dodawanie przycisków

+0

OK jest zrozumiałe, ale mam problem, że nie wiem, co mam do wypełnienia messageType, ikona, opcje i InitialValue ... czy możesz mi w tym pomóc? – Gerret

+0

messageType może być jednym z 'ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE lub PLAIN_MESSAGE', dla reszty można przekazać' null'. Możesz przejrzeć dokumentację dla dalszych informacji –

+0

... Cóż, nie dostaję tego ok pass z null nie ma problemu, ale mam OptionType i MessageType jaka jest różnica? I na mój kod użyłem 'QUESTION_MESSAGE' w OptionType. Więc co z OptionType ... – Gerret