如果屏幕上有很多JLabel,我知道他们的名字我会如何选择找到它们?
例如,我知道我以前(动态)创建了一个名为2340的新JLabel。是否有类似
的内容JLabel image = findJlabel ("2340");
为了选择JLabel组件?
谢谢, 尼哥
编辑:只想展示我如何创建这些JLabel
// Initially creates all the imagelabels
public static void createImageLabels (){
int xcord, ycord;
JLabel image;
String imageLabelName;
xcord = 0;
ycord = yOffset;
for (int row = 0 ; row < map.length; row++) {
xcord = 0;
for (int col = 0 ; col < map[0].length; col++) {
imageLabelName = Integer.toString(row);
imageLabelName += Integer.toString(col);
image = new JLabel(new ImageIcon(space));
image.setName(imageLabelName);
image.setLocation(xcord, ycord);
image.setSize(24, 24);
imagePanel.add(image);
System.out.println ("Created a Jlabel Named "+imageLabelName);
xcord += 24;
}
ycord += 24;
}
}
我在屏幕上创建了一个imageIcons图块,然后如果我想要更改它们显示的图像,我想选择它并进行更改。
答案 0 :(得分:3)
好吧,假设您为所有标签设置了不同的名称,我建议您使用HashMaps。
HashMap<String, JLabel> labels = new HashMap<String,JLabel>();
在你里面“为”sicle,使用:
labels.put("1233", new JLabel(new ImageIcon(space)));
要使用您想要的标签,请使用:
labels.get("1233");
有关详细信息,请查看:
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
答案 1 :(得分:2)
如果你只想找到具有当前容器概念的组件,那么如果你想搜索子容器或父容器,它就会变得更加复杂......
public JLabel findLabelByName(Container parent, String name) {
JLabel found = null;
if (name != null) {
for (Component child : parent.getComponents()) {
if (child instanceof JLabel) {
JLabel label = (JLabel)child;
if (name.equals(label.getName()) {
found = label;
break;
}
}
}
}
return found;
}
现在,如果要在容器层次结构中向上或向下搜索,则需要对此方法执行递归调用,传入新父级,但我确信您可以解决这个问题,但不要剥夺你所有的乐趣;)
答案 2 :(得分:0)
为了选择JLabel组件?
你是如何选择'标签的?
如果是通过鼠标,只需添加一个mouseListener并使用getSource()