У меня есть этот код, который применяет счетчик к каждому элементу в списке. Когда элемент достигает определенного номера, он перемещается из 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 к счетчику.