我使用NetBeans在swing中创建了一个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初始化过程中传递的参数,以便对所有用例都有一个类,但是代码开始变得非常复杂,我拒绝了这种方法。
我所做的是通过图形用户界面设计者创建一个JDialog,完全按照每个按钮的需要,并提出了大约10-11这样的JDialogs。
这个appoach使编程更加简单,但是我不知道它是否是处理这个问题的标准方法,因为我为输入创建了10-11个额外的类。
我的问题是,我所做的是否合理,还是有更好的办法来处理这种情况。
谢谢!
发布于 2010-11-14 15:48:09
我想我应该编写一个返回DialogBuilder的JDialog类。
编辑:
对话的可视化与程序化创作
我习惯于通过编写代码来生成对话框。在Java之前,我以前使用Delphi编写代码,在Delphi中使用GUI创建对话框--所以最初我确实觉得这很烦人,甚至很乏味。现在我更喜欢它。所以是的,我可能会扔掉(大部分) netbeans创建的对话框代码。除非你的对话比你的问题更复杂。
复杂性
是的,有一个危险,您将花费大量的时间来创建相当复杂的代码。然而,如果你像我一样,你会学到很多。您将学到的一件事是如何使用各种模式来避免这种复杂性。找到一种优雅的方法来解决这些问题是我觉得非常令人满意的事情--这是我觉得最令人愉快的编程方面之一。
参数
当您提到您对“10-11不同对话框的if argA&& argB && !argC then display JCheckbox等”的关注时,我只能建议您尝试从不同的方向来处理这个问题。例如,您可以向DialogBuilder传递一组标签和JComboboxes的列表。或者您可以扩展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);您可以看到(我希望)DialogBuilder.add(字符串、JComboBox、布尔)方法不需要数十个复杂的if ... then ... else子句。
只是我的价值0.02美元。
https://stackoverflow.com/questions/4178006
复制相似问题