Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用循环在一个类中为另一个类的多个实例中的按钮添加ActiveListeners_Java_For Loop_Arraylist_Java 8_Actionlistener - Fatal编程技术网

Java 使用循环在一个类中为另一个类的多个实例中的按钮添加ActiveListeners

Java 使用循环在一个类中为另一个类的多个实例中的按钮添加ActiveListeners,java,for-loop,arraylist,java-8,actionlistener,Java,For Loop,Arraylist,Java 8,Actionlistener,我有一个名为InstructionBlock的类,它是一个JPanel 在我的主窗体(JFrame)上,我创建了6个InstructionBlock实例。我需要让我的主窗体根据InstructionBlock实例中按下的按钮执行一些操作,它需要知道哪些实例按下了按钮 我在类指令块中有以下代码: public void InstBlockAddActionListener(ActionListener al) { CheckMarkClicked.addActionListener(al)

我有一个名为
InstructionBlock
的类,它是一个JPanel 在我的主窗体(JFrame)上,我创建了6个
InstructionBlock
实例。我需要让我的主窗体根据
InstructionBlock
实例中按下的按钮执行一些操作,它需要知道哪些实例按下了按钮

我在类
指令块中有以下代码:

public void InstBlockAddActionListener(ActionListener al) {
    CheckMarkClicked.addActionListener(al);
}
我已将
InstructionBlock
的实例添加到我的主窗体中,如下所示:
ArrayList指令窗格=新建ArrayList();
int i

for (int i = 0; i<6;i++) {
       instructionPane.add(new InstructionBlock());
       InstructionLayer.add(instructionPane.get(i));
    }
但我不知道为什么循环不起作用。有没有其他方法可以让它工作?

您的问题在于:

for (i = 0; i<6;i++) {
    instructionPane.get(i).InstBlockAddActionListener((ActionEvent ae) -> {InstructionCheckMarkButtonPressed(i+1);});
}
作为一个附带建议,为了现在帮助我们和将来帮助您自己,请编辑您的代码并更改您的变量名以符合Java。变量名都应该以小写字母开头,而类名应该以大写字母开头。了解这一点并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他人的代码。

您的问题在于:

for (i = 0; i<6;i++) {
    instructionPane.get(i).InstBlockAddActionListener((ActionEvent ae) -> {InstructionCheckMarkButtonPressed(i+1);});
}

作为一个附带建议,为了现在帮助我们和将来帮助您自己,请编辑您的代码并更改您的变量名以符合Java。变量名都应该以小写字母开头,而类名应该以大写字母开头。学习这一点并遵循这一点将使我们能够更好地理解您的代码,也将使您能够更好地理解其他人的代码。

这非常有效。非常感谢。我试图遵守命名惯例,但坏习惯很难改掉。表单上的按钮和控件也会以小写开头?我猜它们是变量,但我一直认为它们是“专有名称”,非常有效。非常感谢。我试图遵守命名惯例,但坏习惯很难改掉。表单上的按钮和控件也会以小写开头?我猜它们是变量,但我一直认为它们是“专有名称”
for (i = 0; i<6;i++) {
    instructionPane.get(i).InstBlockAddActionListener((ActionEvent ae) -> {InstructionCheckMarkButtonPressed(i+1);});
}
for (int j = 0; j < 6; j++) {
    final int finalIndex = j + 1;
    instructionPane.get(j).InstBlockAddActionListener((ActionEvent ae) -> {
        InstructionCheckMarkButtonPressed(finalIndex);
    });
}