gpt4 book ai didi

java - 将一些复选框从一个 ActionListener 转移到另一个 ActionListener

转载 作者:行者123 更新时间:2023-11-29 04:07:18 27 4
gpt4 key购买 nike

我想在单击按钮 b 后检查选中了哪些复选框,但是我的复选框是在我单击按钮 b1

之后声明的

我的意思是,我应该全局声明 checkbox[] 吗?我该怎么做?

b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
JCheckBox checkbox[] = new JCheckBox[3];
checkbox[0] = new JCheckBox("Red");
checkbox[1] = new JCheckBox("Blue");
checkbox[2] = new JCheckBox("Green");
}
});

b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(checkbox[0].isSelected())
// do something
if(checkbox[1].isSelected())
// do something
if(checkbox[2].isSelected())
// do something
}
});

Error: checkbox cannot be resolved to a variable

最佳答案

复选框数组应该对两个监听器都可见。一种选择是作为实例变量。

例如(实际上不会编译,只是一个片段):

   private JCheckBox[] checkboxes;

void register() {
s1.addListener(e -> {
checkboxes = new JCheckBox[3];
// do the rest
};

s2.addListener(e -> {
if(checkboxes[0].isChecked()) {
}
// ....
};
}

但是,这是一个糟糕的设计,因为 checkboxes 成员未完全初始化以供使用,这可能会导致 NullPointerException。相反,您最好在构造函数或其他东西中初始化数组。

考虑:

   private JCheckBox[] checkboxes;

SomeClass() {
checkboxes = new JCheckBox[3];
// do the rest
}

void register() {
s2.addListener(e -> {
if(checkboxes[0].isChecked()) {
}
// ....
};
}

关于java - 将一些复选框从一个 ActionListener 转移到另一个 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57784469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com