我使用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个额外的类。
我的问题是,我所做的是否合理,或者有更好的方法来应对这种情况
谢谢!
答案 0 :(得分:3)
我想我会编写一个返回JDialog的DialogBuilder类。
编辑:
我习惯通过编写代码来生成Dialogs。在Java之前,我曾经在Delphi中使用GUI创建Dialogs代码 - 所以最初我确实发现这很烦人甚至单调乏味。现在我很享受它。所以,是的,我可能会抛出(大部分)netbeans创建的对话框代码。除非你的对话框比你提出的问题更复杂。
是的,您最终会花费大量时间来创建相当复杂的代码。但是,如果你像我一样,你会学到很多东西。您将学习的一件事是如何使用各种模式来避免这种复杂性。寻找一种解决这些问题的优雅方法是我觉得非常令人满意的 - 这是我觉得最有趣的编程方面之一。
当你提到你对10-11种不同jdialogs的“if argA&& argB && !argC then display JCheckbox
等”的关注时 - 我只能建议你尝试从不同的方向来解决问题。例如,您可以向DialogBuilder传递一组标签和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);
你可以看到(我希望)DialogBuilder.add(String,JComboBox,boolean)方法不需要几十个复杂的if ... then ... else
子句。
价值0.02美元。