1

我使用 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 个额外的类。
我的问题是,我所做的是否合理,或者有更好的方法来处理这种情况。
谢谢!

4

1 回答 1

3

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


编辑:

对话框的视觉与程序化创建

我习惯于通过编写代码来生成对话框。在 Java 之前,我曾经在 Delphi 中编码,其中使用 GUI 创建对话框 - 所以最初我确实觉得这很烦人甚至乏味。现在我更喜欢它。所以是的,我可能会丢弃(大部分)由 netbeans 创建的对话框代码。除非您的对话比您的问题建议的更复杂。

复杂

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

参数

当您提到您对“if argA&& argB && !argC then display JCheckbox等 10-11 个不同的 jdialogs”的关注时 - 我只能建议您尝试从不同的方向解决问题。例如,您可以向 DialogBu​​ilder 传递标签和 JCombobox 对的列表。或者,也许您可​​以扩展 JCombobox,使其具有一个附加字段和一个用于其标签的 getter。

例如

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 美元。

于 2010-11-14T15:48:09.570 回答