我有8 JLabels
我最初想要隐身。 jlabels
从25开始,然后转到32. _(i.e jLabel25 ---> jLabel32)_
我没有让它们一个一个地隐形,而是考虑使用一个for循环,可以通过遵循以下代码行使它们不可见:
for( int i = 25 ; i <= 32 ; i++ ) {
jLabel(i).setVisible(false);
}
但是我得到一个明显的错误,上面写着“找不到符号,方法 - &gt; jLabel(int)”
我应该怎么做才能避免写出8条陈述要求让每个label
不可见?
答案 0 :(得分:6)
将标签放入一个公共集合中,然后迭代它。
Collection<JLabel> myLabels = new ArrayList<JLabel>();
myLabels.add(jLabel25); // .. and so on
for (JLabel label : myLabels) {
label.setVisible(false);
}
答案 1 :(得分:2)
不,我认为不可能,你必须每次都写出全名:
jLabel25.setVisible(false);
另一种可能的解决方案是将标签放在数组或列表中,并遍历列表/数组并将其设置为false。
for(JLabel label :listOfLabels)
{
label.setVisible(false);
}
答案 2 :(得分:1)
你不能把它们放在一个清单中吗?
List<JLabel> labels = Arrays.asList(jLabel25, jLabel26, /*rest of 'em here*/);
for(JLabel label : labels) {
label.setVisible(false);
}
答案 3 :(得分:1)
如果你想说服你的同事你生气或者宁愿用另一种语言编程,你可以使用反思。
for(Field labelField : getClass().getFields()) {
String name = label.getName();
if(name.startsWith("jLabel") && name.length == 8 && indexBetween(name.substring(7, 9), 25, 32)) {
JLabel label = (JLabel) labelField.get(this);
label.setVisible(false);
}
}
这仅适用于标签是当前类的字段的情况。