2016-08-04 42 views
0

我有两个组合框下面,的Java设计多个值的情况

enter image description here

每当我点击done按钮,我从组合框中的值,并将其存储在一个对象像下面,

public class comboValues{ 
private String label1ComboString; 
private String label2ComboString; 

public String setLabel1Combo(String val){ 
this.label1ComboString = val; 
} 

public String setLabel2Combo(String val){ 
this.label2ComboString = val; 
} 

public void getLabel1Combo(){ 
return this.label1ComboString; 
} 

public void getLabel2Combo(){ 
return this.label2ComboString; 
} 
} 
在控制器类别I

 comboValues obj = new comboValues(); 
     obj.setLabel1Combo(label1ComboBox.getSelectionModel().getSelectedItem()); 
     obj.setLabel2Combo(label2ComboBox.getSelectionModel().getSelectedItem()); 

对于带有两个组合框的设计,代码看起来很简单。如果组合框的数量增加,我的疑问是什么?用上面的方法代码会有 很多行。什么是设计来克服这个问题,我怎样才能实现这种情况?

+2

使用某些数组,列表或地图? – 2016-08-04 05:13:17

+1

你可以使用'Map' – sidgate

+2

我不认为你想要一个设计模式,就像Factory Pattern或Singleton Pattern一样。我认为你需要一个数据结构,如Map或ArrayList,或者一个包装数据结构并提供更多功能的类。 –

回答

-1

我可以从你的方法看到,你想添加更多的组合框,并针对它,你想在java中做更少的代码来处理这些。

您可以选择实施阵列列表收集并在其中存储多个组合框。所以每次你不需要创建新的对象,它就会变成动态的。

希望它能清除你的疑惑。如果你还没有清除请评论。

0

您可以有一个数组或组合框的ArrayList。这样你可以引用任意数量的方框。你的班级会变成这样的:

public class ComboValues { 
    private String[] comboStrings; 
    ... 
    public void setComboLabel(String label, int comboNum) { 
     comboStrings[comboNum] = label; 
    } 
    public void getComboLabel(int comboNum) { 
     return comboStrings[comboNum]; 
    } 
    public void getComboBoxCount() { 
     return comboStrings.length; 
    } 
} 

... 
String[] labels = ... 
for (int i = 0; i < obj.getComboBoxCount(); i++) { 
    obj.setComboLabel(labels[i], i); 
}