类似的输入对话框创建模式/ swing

时间:2010-11-14 14:56:42

标签: java user-interface design-patterns swing jdialog

我使用NetBeans创建了一个UI 在某些用例中,用户按下按钮,结果会出现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个这样的JDialog。 这个程序使编程变得更加简单,但我不知道它是否是一种标准的处理方式,因为我为输入创建了10-11个额外的类。
我的问题是,我所做的是否合理,或者有更好的方法来应对这种情况 谢谢!

1 个答案:

答案 0 :(得分:3)

我想我会编写一个返回JDialog的DialogBu​​ilder类。


编辑:

视觉与程序创建对话

我习惯通过编写代码来生成Dialogs。在Java之前,我曾经在Delphi中使用GUI创建Dialogs代码 - 所以最初我确实发现这很烦人甚至单调乏味。现在我很享受它。所以,是的,我可能会抛出(大部分)netbeans创建的对话框代码。除非你的对话框比你提出的问题更复杂。

复杂性

是的,您最终会花费大量时间来创建相当复杂的代码。但是,如果你像我一样,你会学到很多东西。您将学习的一件事是如何使用各种模式来避免这种复杂性。寻找一种解决这些问题的优雅方法是我觉得非常令人满意的 - 这是我觉得最有趣的编程方面之一。

参数

当你提到你对10-11种不同jdialogs的“if argA&& argB && !argC then display JCheckbox等”的关注时 - 我只能建议你尝试从不同的方向来解决问题。例如,您可以向DialogBu​​ilder传递一组标签和JCombobox。或者也许你可以扩展JCombobox,以便它有一个额外的字段和一个吸气剂为它的标签。

e.g。

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);

你可以看到(我希望)DialogBu​​ilder.add(String,JComboBox,boolean)方法不需要几十个复杂的if ... then ... else子句。

价值0.02美元。