аналогичные шаблоны создания диалогов ввода / свинг - PullRequest
1 голос
/ 14 ноября 2010

Я создал пользовательский интерфейс в разгаре, используя NetBeans.
В некоторых случаях пользователь нажимает кнопки и в результате появляется JDialog.
JDialog принимает ввод через JComboBox, как минимум 4.
Например
Пользователь нажимает "ButtonA" , и появляется JDialog, который отображает следующее:

"select X:" combo  
"select Y:" combo  
"select Z:" combo  
"select O:" combo  etc  

Т.е. рядом с каждым списком есть описательная метка.В каждом JDialog есть несколько других элементов управления, кроме каждого комбо, например JCheckbox, JTextarea
Если пользователь нажимает "ButtonB" Появляется JDialog, который отображает следующее:

"select A:" combo  
"select B:" combo  
"select C:" combo  etc  

Итакдиалоги не совпадают, но имеют некоторый шаблон в формате представления.Т.е. использование комбинированных списков.
Изначально я хотел создать один JDialog и передать некоторые аргументы для текста, который он должен отображать на ярлыках JDialogs, и должен ли JCheckbox появляться или нет, должен ли JTextArea появляться или нет, и скакой текст и т. д., все в зависимости от параметров, переданных при инициализации JDialog, чтобы иметь единый класс для всех вариантов использования, но код стал действительно сложным, и я отказался от этого подхода.
То, что я сделал, было создано через GUIразработчик JDialog, точно необходимый для каждого нажатия кнопки, и придумал около 10-11 таких JDialogs.
Этот подход значительно упростил программирование, но я не знаю, является ли это стандартным способом решения этой проблемы, так как ясоздал 10-11 дополнительных классов для ввода.
Мой вопрос: разумно ли то, что я сделал, или есть лучшие способы справиться с подобной ситуацией.
Спасибо!

1 Ответ

3 голосов
/ 14 ноября 2010

Думаю, я бы написал класс DialogBuilder, который возвращает JDialog.


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

Визуальное или програматическое создание диалогов

Я привык кгенерирование диалогов путем написания кода.до Java я использовал код в Delphi, в котором диалоги создавались с использованием графического интерфейса, поэтому изначально я находил это раздражающим и даже утомительным.Сейчас мне это нравится.Так что да, я бы, вероятно, выкинул (большую часть) код диалога, созданный netbeans.Если ваши диалоги не являются более сложными, чем предполагает ваш вопрос.

Сложность

Да, есть опасность, что вам придётся потратить много времени на создание довольно сложного кода.Однако, если вы похожи на меня, вы многому научитесь, делая это.Одна вещь, которую вы узнаете, - это как использовать различные шаблоны, чтобы избежать этой сложности.Нахождение элегантного способа решения этих проблем - это то, что я нахожу весьма удовлетворительным, - это один из аспектов программирования, который я считаю наиболее приятным.

Параметры

Когда вы упоминаете о своей озабоченности по поводу "if argA&& argB && !argC then display JCheckboxи т.д. для 10-11 различных jdialogs "- я могу только предложить вам попытаться подойти к проблеме с другой стороны.Например, вы можете передать DialogBuilder список пар меток и JComboboxes.Или, может быть, вы можете расширить JCombobox, добавив в него дополнительное поле и геттер для метки.

например

DialogBuilder builder = new DialogFactory();
builder.add("Select X:", new Xcombo(...), true);  // with checkbox
builder.add("Select Y:", new Ycombo(...), false); // without
...
builder.getDialog.setVisible(true);

или

builder.add("Select X:", new MyCombo(xList), false);
builder.add("Select Y:", new MyCombo(yList), false);

Вы можете увидеть (Я надеюсь), что методу DialogBuilder.add (String, JComboBox, boolean) не потребуются десятки сложных if ... then ... else предложений.

Только мои $ 0,02.

...