【发布时间】:2019-07-16 22:13:52
【问题描述】:
我有 6 个按钮和 6 个布尔值,Actionhandler 应该使布尔值,即它的按钮,如果它被单击,则为 true。为了更容易,我创建了一个 boolean[] 数组,但是 setter 函数给出了错误:
"表达式的类型必须是数组类型,但解析为布尔值";
我需要在 ActionListener 的 setter 中设置什么?
我试过了:
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;
}
}
【问题讨论】:
-
第一个 Code 是变量类,其中声明了布尔值并设置默认为 false ;第二个在 ActionListener 中,它包含问题;第三个只是为了理解我有 6 个按钮,它们都有自己的布尔值
-
您还没有展示
ko是如何声明的,但它必须是JButton或其某个超类的数组,否则您将无法像您一样分配给它.因此,您不能将其作为布尔数组返回,并且您永远不会希望有一个替换整个数组的设置器,因为您会丢失对按钮的引用。此外,true[i]并不接近有效;布尔值不是数组,不能下标。 -
@DavidConrad 我添加了更多代码,希望它能帮助您(和其他人)理解我制作的垃圾;我没有比布尔值更好的解决方案,是否有另一种方法可以识别按钮是否被按下?
标签: java arrays boolean getter-setter