У меня возникла проблема в течение нескольких часов. Я не знаю, что это такое, но мне сейчас трудно думать. Этот метод отображает набор изображений. Первая часть метода просто устанавливает ограничения сетки, тогда как следующая часть в выражении if создает jlabels и добавляет их в arraylist jlabels. Исключение возникает, когда я пытаюсь добавить mouselisteners в jlabels после того, как они были добавлены в arraylist (это в строке 112, и я прокомментировал это в коде).Получение indexOutOfBoundsException, и я не знаю, почему
public void displayComplexStimulus(BufferedImage[] complexStimulus){
for(int i = 0; i < numberOfElements; i++){
if (i == 0 || i == 1 || i == 2){
c.gridx = i;
c.gridy = 0;
}
else if(i == 3 || i == 4 || i == 5){
c.gridx = i - 3;
c.gridy = 1;
}
else {
c.gridx = i - 6;
c.gridy = 2;
}
if(counter == 1){
if (phase1Trial.getPositionOfCorrectImage()!= i){
phase1IncorrectLabels.add(new JLabel(new ImageIcon(complexStimulus[i])));
phase1IncorrectLabels.get(i).addMouseListener(this); //line 112
add(phase1IncorrectLabels.get(i),c);
}
else if(phase1Trial.getPositionOfCorrectImage() == i){
correctLabel = new JLabel(new ImageIcon(complexStimulus[i]));
add(correctLabel, c);
correctLabel.addMouseListener(this);
}
}
}
}
Несвязанный, но вы можете подумать о замене больших '' '' '' if (i <= 2) ... else if (i <= 5) ... else ... ' – Nico
numberOfElements имеет значение 6. phase1IncorrectLabels - это метки в задаче, которые являются неправильными, если человек нажимает на них. Одновременно им показывают 6 ярлыков, и они должны щелкнуть по правильному. Итак, один из 6 правильных. – lb91
Я думаю, что частично исправил свою проблему. Иногда условие else if удовлетворялось, и поэтому элемент не добавлялся бы в массив falseLabels, и поэтому, когда i в цикле for увеличивался, в массиве было недостаточно элементов. У меня все еще есть проблемы, потому что кажется, что метод mouselistener не отвечает на неправильные метки, что заставляет меня думать, что метод addMouseListener не правильно добавляет слушателей к меткам. – lb91