Это довольно сумасшедший:
У меня есть запись AppSight (для тех, кто не знаком, это запись того, что они сделали, включая ввод с клавиатуры / мыши + сетевой трафик и т. Д.) Клиента, воспроизводящего ошибку. По сути, у нас есть ряд элементов, перечисленных на экране, с JCheckBox-е внизу слева. У нас есть набор MouseListener для JPanel, который выглядит примерно так:
private MouseAdapter createMouseListener() {
return new MouseAdapter(){
public void mousePressed( MouseEvent e ) {
if( e.getComponent() instanceof JCheckBox ) {
// Do stuff
}
}
};
}
Судя по записи, очень сильно видно, что они нажимают чуть выше одного из флажков. После этого я верю, что этот слушатель сработал, и случился блок «Делай вещи». Однако, это НЕ проверяло коробку. Затем пользователь увидел, что флажок снят, и щелкнул по нему. Это вызвало повторное срабатывание блока «Делать вещи», что отменило то, что он делал в первый раз. На этот раз флажок был отмечен. Таким образом, пользователь считает, что флажок установлен, и выглядит так, как есть, но наш клиент считает, что флажок снят, так как он был нажат дважды.
Возможно ли это вообще? На самом деле я не могу воспроизвести это или увидеть, как это возможно, но на основании записи и данных, которые клиент отправил на сервер, я не вижу другого логического объяснения.
Любая помощь, мысли и / или идеи будут высоко оценены.