[英]How to access dynamically created element (JAVA)?
我已经动态创建了几个jCheckBox元素:
for (j=0;j<j1;j++){
final JCheckBox cb = new JCheckBox("");
cb.setText(col_name);
mainPanel12.add(cb,BorderLayout.NORTH);
mainPanel12.repaint();
...
}
如何访问循环外的某些特定复选框,因为它们都具有相同的名称cb ?
该变量名只能在循环中访问,所以无论如何它都没用。 您是否在您调用此代码的类中考虑了成员变量? 如有必要,可以使用JCheckBoxes数组。
您必须从面板mainPanel12 获取组件并迭代集合。 您可以为组件设置名称,然后尝试搜索具有该名称的组件。
for (j=0;j<j1;j++){
final JCheckBox cb = new JCheckBox("");
cb.setText(col_name);
cb.setName(String.toString(j);
mainPanel12.add(cb,BorderLayout.NORTH);
mainPanel12.repaint();
...
}
Component[] comps = mainPanel12.getComponents();
for (j=0;j<mainPanel12.size();j++){
Component c = comps[i];
if("1".equals(c.getName())) {
// and here is your component :-)
}
}
把一个HashMap of Integer和jCheckBox这样外面的循环作为intance变量:
Map<Integer,JCheckBox> map = new HashMap<Integer,JCheckBox>();
for (j=0;j<j1;j++){
final JCheckBox cb = new JCheckBox("");
cb.setText(col_name);
mainPanel12.add(cb,BorderLayout.NORTH);
mainPanel12.repaint();
map.put(j,cb);
...
}
你可以像这样使用外部循环;
JCheckBox = map.get(index_value_of_checkbox);
要么
for(int i = 0; i<map.size(); ++i)
JCheckBox cb = map.get(i);
您可以在循环外创建数据结构,以便在创建新对象时记录cb的每个值。 最简单的方法是使用包含所有复选框的某种容器(可能是数组或java.util.List):
JCheckBox[] cbs=new JCheckBox[j1];
for (j=0;j<j1;j++) {
final JCheckBox cb = new JCheckBox("");
cb.setText(col_name);
mainPanel12.add(cb,BorderLayout.NORTH);
mainPanel12.repaint();
...
cbs[j]=cb;
}
现在,您可以通过索引循环外部数组的元素来引用复选框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.