我正在用java编写一个swing应用程序,我有10个jPanel,每个jPanel有10个jCheckBox。 jPanel 的名称为 jPanel1、jPanel2 等; jPanel1 中 jCheckBox 的名称为 jCheckBox1_1、jCheckBox1_2、jCheckBox1_3 等,其他 jPanel 也类似。一会儿我需要知道用户检查了哪些 jcheckboxes,所以我这样做
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 中使用 jCheckBox(用于查看它们是否被选中),而不是在 jPanel 中。问题是我必须编写大量重复的代码,我认为这并不智能。所以我想知道是否可以“恢复”这些对象并通过它们的字符串名称使用它们。例如:
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;
}
所以我想知道您是否知道如何通过字符串名称使用这些 jCheckBox。我知道我可以以编程方式将它们创建为数组,一切都会更容易,但另一个问题是,因为它是一个 swing gui,所以很难以编程方式设计它们。提前致谢。
最佳答案
两种解决方案:
- 第一个选项,将actionListeners附加到每个复选框,以在发生时向应用程序的控件报告该框已被选中。 (或未选中)。
- 第二个选项,修改您使用复选框数组的尝试,并直接使用该数组来引用复选框,而不是第二个字符串数组。
关于java - 如何在java中通过字符串名称使用实例化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20643385/