Java – Как создать настраиваемое диалоговое окно?

У меня есть кнопка на JFrame, которая при нажатии меня должна отображать диалоговое окно с несколькими текстовыми областями для ввода пользователем. Я искал все вокруг, чтобы попытаться выяснить, как это сделать, но я все больше смущаюсь. Может ли кто-нибудь помочь?

Если вам не нужно много настраивать поведение, JOptionPane – хорошая экономия времени. Он позаботится о размещении и локализации параметров OK / Отмена и является быстрым и грязным способом отображения пользовательского диалога без необходимости определять ваши собственные classы. В большинстве случаев параметр «сообщение» в JOptionPane является строкой, но вы также можете передать JComponent или массив JComponents.

Пример:

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 result = JOptionPane.showConfirmDialog(null, inputs, "My custom dialog", JOptionPane.PLAIN_MESSAGE); if (result == JOptionPane.OK_OPTION) { System.out.println("You entered " + firstName.getText() + ", " + lastName.getText() + ", " + password.getText()); } else { System.out.println("User canceled / closed the dialog, result = " + result); } 

В этом уроке из учебника Java подробно объясняется каждый компонент Swing с примерами и ссылками API.

Если вы используете среду IDE NetBeans (последняя версия на данный момент составляет 6.5.1), вы можете использовать ее для создания базового GUI-приложения Java с помощью File-> New Project и выбора категории Java, а затем Java Desktop Application.

После создания у вас будет простое GUI-приложение с голыми костями, которое содержит окно, которое можно открыть, используя выбор меню. Вы должны уметь адаптировать это к вашим потребностям и научиться открывать диалог нажатием кнопки.

Вы сможете редактировать диалог визуально. Удалите элементы, которые есть, и добавьте некоторые текстовые области. Играйте с ним и возвращайтесь с большим количеством вопросов, если вы застряли 🙂

Ну, вы по существу создаете JDialog, добавляете свои текстовые компоненты и делаете их видимыми. Это может помочь, если вы сузите какой конкретный бит, с которым вы столкнулись.

Попробуйте этот простой class для настройки диалога по своему вкусу:

 import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JRootPane; public class CustomDialog { private List components; private String title; private int messageType; private JRootPane rootPane; private String[] options; private int optionIndex; public CustomDialog() { components = new ArrayList<>(); setTitle("Custom dialog"); setMessageType(JOptionPane.PLAIN_MESSAGE); setRootPane(null); setOptions(new String[] { "OK", "Cancel" }); setOptionSelection(0); } public void setTitle(String title) { this.title = title; } public void setMessageType(int messageType) { this.messageType = messageType; } public void addComponent(JComponent component) { components.add(component); } public void addMessageText(String messageText) { JLabel label = new JLabel("" + messageText + ""); components.add(label); } public void setRootPane(JRootPane rootPane) { this.rootPane = rootPane; } public void setOptions(String[] options) { this.options = options; } public void setOptionSelection(int optionIndex) { this.optionIndex = optionIndex; } public int show() { int optionType = JOptionPane.OK_CANCEL_OPTION; Object optionSelection = null; if(options.length != 0) { optionSelection = options[optionIndex]; } int selection = JOptionPane.showOptionDialog(rootPane, components.toArray(), title, optionType, messageType, null, options, optionSelection); return selection; } public static String getLineBreak() { return "
"; } }

я создал пользовательский диалог API. проверьте здесь https://github.com/MarkMyWord03/CustomDialog . Он поддерживает окно сообщений и подтверждения. диалог ввода и опции, как и в joptionpane, будет реализован в ближайшее время.

Пример диалогового windows ошибок из API CUstomDialog : сообщение об ошибке CustomDialog

  • Браузер Webkit в приложении Java
  • Как заполнить JComboBox с помощью ArrayList?
  • Лучший компонент браузера Java / Swing?
  • Как изменить форму вкладки JTabbedPane?
  • Качание на OSX: как ловушка command-Q?
  • Заполнение JTable большим количеством строк
  • Java swing JComponent "размер"
  • Поддерживает ли Swing поддержку файлов в стиле Windows 7?
  • Получение состояния JToggleButton
  • Сортировка строк по столбцам в JTable
  • Как установить жесткий предел для JComponent, когда setMaximumSize () и setPrefferedSize () не работают?
  • Interesting Posts

    (Выигрыш 10) Черный экран после подключения HDMI

    Получить тело запроса POST из HttpServletRequest

    список значений в листовых узлах двоичного дерева T

    Как выполнить rsync большой файл с минимальными затратами на процессор и пропускную способность?

    Добавьте сложное изображение в панель, с кнопками вокруг него в одном настраиваемом пользовательском интерфейсе

    PDF TEXT Extraction

    Файловая система, используемая для внешнего жесткого диска для использования с компьютерами Mac, Linux и Windows

    ruby on rails f.выберите опции с настраиваемыми атрибутами

    Использование адаптера с более высоким выходным напряжением?

    Преобразование int в 4-байтовый массив символов (C)

    «Требуется Gradle Version 2.10». Ошибка

    Как подтвердить Жесткий диск отлично не проблема?

    С Mercurial, как я могу «сжать» серию наборов изменений в один перед нажатием?

    Параметры индексирования Windows 10 не могут быть доступны (и поиск в Windows не работает)

    IPv4 против приоритета IPv6 в Windows 7

    Давайте будем гением компьютера.