#java #swing
Здравствуйте! Не знаю, правильно ли я подобрал термин "динамическое построение", но суть вот в чём. Необходимо реализовать метод, который бы через цикл выводил компоненты различных типов в определённом порядке. Скажем, сначала идут 3 JTextField (Имя, Фамилия, Отчество) - потом два JComboBox (Пол, Страна) и дальше другие текстовые поля. Метка и текстовое поле (или список) заворачиваются в JPanel. Каждой метке присваивается имя и текст. Текстовому полю или списку присваивается имя. Для начала, я думаю, нужно где то сохранить имена меток и текстовых полей. А также текст меток: Multimaplabels; List componentsName; List componentsList //список выводимых компонентов: "JTextField","JTextField","JComboBox" etc.. public void drawComponents(Multimap labels, List componentsName, List componentsList ) { /*do something*/ } Как создать красивый цикл перебора элементов и вывести компоненты на форму?
Ответы
Ответ 1
Предложу вам такой вариант: создайте класс описывающий этап(сократите с 3х коллекций до одной мапы). Он будет содержать поля описывающие каждый этап (имя + элемент который надо создать + можно добавить поле для результата) занести в мапу номер этапа - ключ, объект этапа - значение в цикле по индексу этапа вытаскивать объект из мапы, инициализировать все элементы (label, JTextField ...), сделать их видимыми ждать ввода от пользователя, нажатия кнопки "далее", заносить результат ввода в объект этапа делать невидимыми все элементы GUI. По итогу вы получите мапу, со всеми этапами + результатами ввода на этих этапах.Ответ 2
Думаю, можно попробовать просто показывать компоненты по очереди - объявляешь все, потом задаёшь размеры и свойства, а при добавлении на форму дописываешь component.setVisible(false); где component - интересующий компонент. Потом, в конце каждой проверки, если данные верны - вызываешь у всех предыдущих компонентов component.setVisible(false), а у следующих - component.setVisible(true)
Комментариев нет:
Отправить комментарий