首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似的输入对话框-创建模式/swing

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

Stack Overflow用户
提问于 2010-11-14 14:56:41
回答 1查看 328关注 0票数 1

我使用NetBeans在swing中创建了一个UI。

在某些用例中,用户按下按钮,结果会出现一个JDialog。

JDialog通过JComboBox接受输入,至少4。

例如。

用户按下"ButtonA",就会出现一个显示以下内容的JDialog:

代码语言:javascript
复制
"select X:" combo  
"select Y:" combo  
"select Z:" combo  
"select O:" combo  etc  

也就是说,在每个组合旁边是一个描述性标签。除了每个组合之外,每个JDialog中还有一些其他控件,即JCheckbox、JTextarea。

如果用户按下"ButtonB",就会出现显示以下内容的JDialog:

代码语言:javascript
复制
"select A:" combo  
"select B:" combo  
"select C:" combo  etc  

因此,对话框是不一样的,但在它们的表示格式中有一些模式。即使用组合框。

最初,我想创建一个JDialog,并为它应该显示在JDialogs标签上的文本传递一些参数,以及JCheckbox是否应该出现,如果JTextArea应该出现或不出现,以及使用什么文本等等,所有这些都取决于在JDialog初始化过程中传递的参数,以便对所有用例都有一个类,但是代码开始变得非常复杂,我拒绝了这种方法。

我所做的是通过图形用户界面设计者创建一个JDialog,完全按照每个按钮的需要,并提出了大约10-11这样的JDialogs。

这个appoach使编程更加简单,但是我不知道它是否是处理这个问题的标准方法,因为我为输入创建了10-11个额外的类。

我的问题是,我所做的是否合理,还是有更好的办法来处理这种情况。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

例如:

代码语言:javascript
复制
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);

代码语言:javascript
复制
builder.add("Select X:", new MyCombo(xList), false);
builder.add("Select Y:", new MyCombo(yList), false);

您可以看到(我希望)DialogBuilder.add(字符串、JComboBox、布尔)方法不需要数十个复杂的if ... then ... else子句。

只是我的价值0.02美元。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4178006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档