如何使用for循环的Map <string,jlabel =“”>

时间:2018-02-23 13:06:22

标签: java

可以使用for循环执行此操作吗?

public class MainScreen extends javax.swing.JFrame {
    private final Map<String, JButton> buttonMap = new HashMap<String,JButton>();

    public MainScreen() {
        buttonMap.put("utilaj1", utilaj1);
        buttonMap.put("utilaj2", utilaj2);
        buttonMap.put("utilaj1", utilaj1);
        buttonMap.put("utilaj2", utilaj2);
        //......................
        buttonMap.put("utilaj20", utilaj20);
    }
}

类似的东西:

public class MainScreen extends javax.swing.JFrame {
    private final Map<String, JButton> buttonMap = new HashMap<>();

    public MainScreen() {
        for(i = 1; i <= 20; i++){
            buttonMap.put("utilaj1", utilaj1);
            buttonMap.put("utilaj"+i, utilaj+i);
        }
    }
}

这不起作用,因为utilaj1 ... utilaj20这是一个JButton

1 个答案:

答案 0 :(得分:1)

您可以通过添加列表中的所有按钮来实现您的要求,然后将它们放在地图中,如下所示:

private final Map<String,JButton> buttonMap = new HashMap<String,JButton>();
private List<JButton> buttons = Arrays.asList(utilaj1, ..., utilaj20);

public MainScreen() {
    for(i=1;i<=20;i++){
        buttonMap.put("utilaj"+i, buttons.get(i));
    }
}

但它不会更容易使用,你可以直接使用List,取决于你想做什么