错误:表达式的类型必须为数组类型,但已解析为布尔值

时间:2019-07-16 22:13:52

标签: java arrays boolean getter-setter

我有6个按钮和6个布尔值,Actionhandler应该将布尔值设为该按钮的布尔值,如果单击该按钮,则为true。为了简化起见,我制作了一个boolean []数组,但是setter函数给出了错误:

  

“表达式的类型必须是数组类型,但解析为布尔值”;

我需要在ActionListener的设置器中设置什么?

我尝试过:

  • Var.setKo(true);
  • Var.setKo(true[i]);
  • Var.setKo(boolean[i] true);
  • 更多


        public class Gui {

    static JButton ko[] = new JButton[6];

    public Gui() {

        int y=0;
        for (int i = 0; i < ko.length; i++) {
            ko[i] = new JButton();
            ko[i].addActionListener(new ActionHandler());
            ko[i].setBorder(bor);
            if(i==0||i==2||i==4) {
                ko[i].setBounds(650, 200+60*y, 250, 30);
            }else {
                ko[i].setBounds(950, 200+60*y, 250, 30);
                y++;
            }
            jfMenu.add(ko[i]);

        }
    }

    public static JButton[] getKo() {
        return ko;
    }

    public static void setKo(JButton[] ko) {
        Gui.ko = ko;
    }


}

public void actionPerformed(ActionEvent e) {

    for (int i = 0; i < Var.getKo().length; i++) {
        if(e.getSource() == Var.getKo()) {
            Var.setKo(true[i]);
        }else {
            Var.getKo()[i] = false;
        }
    }

}

public class Var {

    static boolean ko[] = new boolean[6];

    public Var() {

        for (int i = 0; i < ko.length; i++) {
            ko[i] = false;
        }

    }
    public static boolean[] getKo() {
        return ko;
    }

    public static void setKo(boolean[] ko) {
        Var.ko = ko;
    }
}


1 个答案:

答案 0 :(得分:0)

您无需在此处使用setter,您的数组已存在,它已经初始化,因此无需再次设置它。

您需要更改的是某些索引的值。可以通过使用getter来获取对数组的引用,然后选择正确的索引并为其分配值。

就像下面的

public void actionPerformed(ActionEvent e) {
    for (int i = 0; i < Var.getKo().length; i++) {
        Var.getKo()[i] = e.getSource() == Var.getKo();
    }
}