У меня есть этот код, который применяет счетчик к каждому элементу в списке. Когда элемент достигает определенного числа, он перемещается из jList3 в jList 1.
public Map<Object, Integer> buttonMap = new HashMap<Object, Integer>();
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
Integer counter = null;
int[] selection = jList3.getSelectedIndices();
for (int i = 0; i < selection.length; i++){
Object selString = jList3.getModel().getElementAt(selection[i]);
counter = buttonMap.get(selString);
if(counter == null ) {
buttonMap.put(selString, new Integer(1));
}
else {
buttonMap.put(selString, new Integer(counter.intValue() + 1));
}
System.out.println(selString + " has been clicked " + buttonMap.get(selString) + " times.");
try{
if (counter == 4){
listModel2.removeElement(selString);
listModel.addElement(selString);
}
}
catch (NullPointerException npe1) {
npe1.getMessage();
}
}
}
Поведение описывается в разделе if counter == 4
.
Работает нормально, но вот та странная часть, в которой мне нужна помощь для понимания
Если я считаю два предмета одновременно, и они оба достигают числа, которое перемещает их одним нажатием кнопки.
-Двигается 1 из предметов
-Это не считается на другом
-Заменяет +1 на счетчик невыделенного предмета
Пример:
Я рассчитываю на элементы списка 1 и 2, они оба достигают максимального числа, 1 перемещается, 2 остается на месте (без увеличения количества), а элемент 3 получает +1 к счетчику