【发布时间】:2011-08-26 15:25:03
【问题描述】:
我有一组实现特定接口的类和一组复选框。如果没有选中任何复选框,我想抛出一个错误。如果至少选择了一个或多个复选框,那么它应该创建与该复选框关联的对象。
我就是这样做的。
interface U { ... }
class A implements U { ... }
class B implements U { ... }
class C implements U { ... }
class Main {
//....
//....
public void findSelectedCheckBoxesAndCreateObjects() {
if(!(checkboxA.isSelected() || checkboxB.isSelected() || checkboxC.isSelected()) {
System.out.println("No checkboxes selected");
return;
}
//if any selected, create associated object
if(checkboxA.isSelected()) new A(file);
if(checkboxB.isSelected()) new B(file);
if(checkboxC.isSelected()) new C(file);
}
}
现在我有 3 个问题。
- 这只是一个示例代码。 Original 有 8 个复选框和类,未来还会有更多。
- 我不能每次有新课程检查时都添加
|| checkboxD.isSelected()。 - 同样的事情。我不能一直为每个班级添加
if(checkboxD.isSelected()) new D(file);。
这很不雅。我可以有某种循环来删除冗余代码吗?
请给我你的建议。 谢谢。
【问题讨论】:
-
问题,1) 是否有可能只选择一个 JCheckBox,或者两个、三个...不止一次,2)
public void findSelectedCheckBoxesAndCreateObjects() {将从 JCheckBox#ItemListener 或 ActionListenere 中调用,或者有/例如来自 JButton 的 Action ???任何事件/动作 -
答案:1. 不可以。可以选择多个复选框。 2. 这是 JButton 的一个示例动作。 :)
-
对于证明代码,如果您在所有情况下都等待/期望正确的输出download.oracle.com/javase/tutorial/uiswing/components/… 和最好的 DB tips4java.wordpress.com/2008/11/09/select-button-group,则必须为 ButtonGroup 编写更大的工作区,但 Map 或 Set 应该适合那也是
标签: java swing coding-style code-reuse jcheckbox