Как проверить, если пользователь вводит что-то или нет в JDialogBox? - PullRequest
2 голосов
/ 13 июня 2011

Я создал пользовательское диалоговое окно, которое требует 3 поля

public class Test{

    public static void main(String args[])

    {

        JTextField firstName = new JTextField();

        JTextField lastName = new JTextField();

        JPasswordField password = new JPasswordField();

        final JComponent[] inputs = new JComponent[] {

                        new JLabel("First"),

                        firstName,

                        new JLabel("Last"),

                        lastName,

                        new JLabel("Password"),

                        password

        };

        JOptionPane.showMessageDialog(null, inputs, "My custom dialog",JOptionPane.PLAIN_MESSAGE);

        System.out.println("You entered " +firstName.getText() + ", " +lastName.getText() + ", " +password.getText());

    }
}

Как проверить, вставил ли пользователь все поля или нет? И даже если пользователь закроет диалоговое окно, оно отобразит

You entered , , 

Я хочу проверить пользовательский ввод в поле и закрыть приложение, если пользователь закрывает диалоговое окно без dsplaying

"You entered , , "

Ответы [ 3 ]

1 голос
/ 13 июня 2011

Я предлагаю другой подход разграничения каждого элемента данных.

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Test {

public static void main(String args[])
    {
        JTextField firstName = new JTextField();
        JTextField lastName = new JTextField();
        JPasswordField password = new JPasswordField();
        final JComponent[] inputs = new JComponent[] {
                new JLabel("First"),
                firstName,
                new JLabel("Last"),
                lastName,
                new JLabel("Password"),
                password
        };

        JOptionPane.showMessageDialog(null, inputs, "My custom dialog",JOptionPane.PLAIN_MESSAGE);

        System.out.println("You entered '" +
            firstName.getText() + "', '" +
            lastName.getText() + "', '" +
             //don't ignore deprecation warnings!
            new String(password.getPassword()) + "'.");
    }
}

Таким образом, вы можете указать, какие поля отсутствуют в.

You entered '', 'johnson', ''.
You entered 'john', '', ''.
You entered '', '', 'johnsjohnson'.
1 голос
/ 13 июня 2011

Краткий ответ, проверьте, осталось ли что-либо в строке перед печатью.

if(firstName.getText().equals("")) {
    //Respond appropriately to empty string
} else {
    // Respond appropriately to non-empty string
}
1 голос
/ 13 июня 2011

Вы можете проверить, вставил ли пользователь все поля или нет, следующим образом:

if(firstName.getText() != "" && lastName.getText() != "" && password.getText() != "")
    System.out.println("All fields have been filled!");
else
    System.out.println("Some fields are need to be filled!");

РЕДАКТИРОВАТЬ:

Для отображения сообщения после закрытия диалогового окна,Вы можете сделать это следующим образом:

myframe.addWindowListener(new WindowAdapter()
{
    public void windowClosing(WindowEvent e)
    {
        JOptionPane.showMessageDialog(null,"You entered " + firstName.getText() + ", " + lastName.getText() + ", " +password.getText());
    }
});

РЕДАКТИРОВАТЬ2:

ОК, я думаю, я понимаю ваш вопрос сейчас, попробуйте это:

public class Test
{
    public static void main(String args[])
    {
        JTextField firstName = new JTextField();
        JTextField lastName = new JTextField();
        JPasswordField password = new JPasswordField();
        final JComponent[] inputs = new JComponent[]
        {
            new JLabel("First"),
            firstName,
            new JLabel("Last"),
            lastName,
            new JLabel("Password"),
            password        
        };
        int i = JOptionPane.showConfirmDialog(null, inputs, "My custom dialog",JOptionPane.PLAIN_MESSAGE);
        if(i == 0) System.out.println("You entered " + firstName.getText() + ", " + lastName.getText() + ", " + password.getText());
    }
}
...