Простая всплывающая Java-форма с минимум двумя полями - PullRequest
15 голосов
/ 09 июня 2010

Когда пользователь нажимает кнопку, я хочу показать всплывающую форму, которая должна иметь как минимум два JTextFields и два JLabels, поэтому использование JOptionPane.showInputDialog не представляется возможным.

1 Ответ

40 голосов
/ 09 июня 2010

Вы должны хотя бы рассмотреть один из методов JOptionPane, например showInputDialog() или showMessageDialog().

Добавление: выбор использования JOptionPane больше зависит от пригодности модальности, а не от количества показанных компонентов. См. Также Как создавать диалоги .

Приложение: Как отмечено в комментарии @camickr, вы можете установить фокус на конкретный компонент, используя подход, описанный в Диалоговое окно Focus , цитируемое здесь .

image

package gui;

import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.*;

/** @see https://stackoverflow.com/a/3002830/230513 */
class JOptionPaneTest {

    private static void display() {
        String[] items = {"One", "Two", "Three", "Four", "Five"};
        JComboBox<String> combo = new JComboBox<>(items);
        JTextField field1 = new JTextField("1234.56");
        JTextField field2 = new JTextField("9876.54");
        JPanel panel = new JPanel(new GridLayout(0, 1));
        panel.add(combo);
        panel.add(new JLabel("Field 1:"));
        panel.add(field1);
        panel.add(new JLabel("Field 2:"));
        panel.add(field2);
        int result = JOptionPane.showConfirmDialog(null, panel, "Test",
            JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
        if (result == JOptionPane.OK_OPTION) {
            System.out.println(combo.getSelectedItem()
                + " " + field1.getText()
                + " " + field2.getText());
        } else {
            System.out.println("Cancelled");
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                display();
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...