繁体   English   中英

如何访问动态创建的元素(JAVA)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM