通过知道其名称来选择JLabel

时间:2013-01-06 04:20:30

标签: java swing jlabel

如果屏幕上有很多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图块,然后如果我想要更改它们显示的图像,我想选择它并进行更改。

3 个答案:

答案 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()