我正在用java编写一个swing应用程序,我有10个jPanel,每个都有10个jCheckBox。 jPanel的名称是jPanel1,jPanel2等; jPanel1中jCheckBox的名称是jCheckBox1_1,jCheckBox1_2,jCheckBox1_3等,其他jPanels的名称相似。片刻之后,我需要知道用户已经检查了哪些jcheckbox,所以我这样做
boolean[] selected=new boolean[100];
for(int i=0; i<selected.length; i++)
selected[i]=false;
if(jPanel1.jCheckBox1_1.isSelected())
selected[0]=true;
if(jPanel1.jCheckBox1_2.isSelected())
selected[1]=true;
if(jPanel1.jCheckBox1_3.isSelected())
selected[2]=true;
继续其余
我应该这样做因为我在jFrame中使用jCheckBoxes(用于查看它们是否被检查),而不是在jPanel中。问题是我必须写很多重复的代码,我认为这不是智能的。所以我想知道我是否可以“恢复”这些对象并使用它们的String名称来使用它们。例如:
String[] name=new String[100];
JCheckBox[] checkbox=new JCheckBox[name.length];
for(int i=0; i<100; i++){
int num_panel=i/10+1;
name[i]="jPanel"+num_panel+".jCheckBox"+num_panel+"_"+(i%10+1);
}
//and now use those names to ask if those jcheckBoxes are checked
boolean[] selected=new boolean[100];
for(int i=0; i<100; i++){
if(name[i].isSelected()) //but this isn't right because its a String, not a jCheckBox
selected[i]=true;
else
selected[i]=false;
}
所以我想知道你是否知道如何通过字符串名称使用这些jCheckBoxes。我知道我可以用编程方式创建它们作为一个数组,一切都会更容易,但其他问题是因为它是一个摇摆gui,所以很难以编程方式设计它们。提前谢谢。
答案 0 :(得分:2)
两种解决方案: