JOptionPane.showInputDialog () вопросы - PullRequest
0 голосов
/ 21 марта 2011

Я только начинаю программирование на Java сегодня вечером (хотя я долгое время программист на C ++).

Я экспериментирую с функцией JOptionPane.showInputDialog() для сбора пользовательского ввода.

Однако он продолжает устанавливать z-порядок диалогового окна ввода под моей IDE без уведомления в меню «Пуск».что диалог даже там.

Есть ли способ настроить параметры отображения в верхней части z-порядка или, возможно, даже в системном режиме?

Кроме того, есть ли способ ограничить типы символовкоторые можно ввести в текстовое поле диалога ввода, например, только числовые типы?

Спасибо за помощь

Ответы [ 4 ]

6 голосов
/ 21 марта 2011

JOptionPane диалоги всегда модальные. Здесь нет проблем. Вы найдете диалоговое окно ввода, расположенное в центре базового JFrame (this), если вы используете его следующим образом:

String myInput = JOptionPane.showInputDialog(this, "myPrompt");

Вы найдете его в центре экрана, если называть его так:

String myInput = JOptionPane.showInputDialog("myPrompt");

В обоих случаях диалог является модальным по умолчанию.

Чтобы отформатировать и контролировать JTextField для вашего ввода, вы должны создать свой собственный JDialog, который довольно прост и использовать внутри JFormattedTextField с любыми необходимыми ограничениями.

1 голос
/ 06 октября 2011

Вы можете попробовать использовать метод .matches с определенным вами шаблоном , который возвращает значение логическое , поэтому, если оно истинно, оно попадет в ваш если , оператор [] определяет данные, которые вы хотите, чтобы пользователь вводил, {} определяет, сколько символов, где первое число является минимальным, а второе число является максимальным. Письма работают так [A-Za-z]

Ниже приведен пример, который подойдет для ирландского автомобильного номера
[0-9] {2} \ s- \ s [A-Za-Z] {1,2} \ s- \ с [0-9] {1,7}
"Два числа от 0-9" "-" "одна или две буквы в верхнем или нижнем регистре" "-" "От одной до семи цифр от 0-9" например "08 - Ky - 123"

String pattern= "[0-9]{1,8}";
String userInput = JOptionPane.showInputDialog(null, "Enter data of numerical value")

if (userInput.matches(pattern))
1 голос
/ 21 марта 2011

Диалог JOptionPane будет модальным по отношению к вашему Java-приложению или апплету. не будет модальным по отношению к вашей IDE.

Посмотрите на аргументы JOptionPane.showInputDialog .Обратите внимание, что аргумент message является Object, а не String.

Когда вы передаете String, JOptionPane отобразит его как приглашение (JLabel), за которым следуетJTextField.

Однако вы также можете передать JComponent или массив JComponent.Когда вы сделаете это, JOptionPane отобразит ваши компоненты вместо значений по умолчанию JLabel и JTextField.

Чтобы ограничить ввод только цифрами, вы должны указать JLabel (для приглашения)и JFormattedTextField с InputVerifier.JavaLoby имеет хороший, быстрый обзор JFormattedTextField с MaskFormatter

1 голос
/ 21 марта 2011

У вас есть два варианта, когда дело доходит до ограничения ввода определенными типами символов и т. Д. Либо сверните свой собственный JDialog, как упомянуто, либо подтвердите ввод, как только он будет отправлен с JOptionPane.showInputDialog(), и снова откройте диалоговое окно, если вводнедопустимо, желательно с (новым / добавленным) сообщением, объясняющим, почему:)

Как сделать диалоги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...