Я использую JXTable и JXTableHeader для отображения сортируемых таблиц. JXTableHeader поддерживает способ сброса порядка сортировки, удерживая клавишу Shift и одновременно щелкая левой кнопкой мыши по заголовкам. Проблема заключается в следующем: этот режим сброса невозможен, потому что BasicTableHeaderUI Java Swing добавляет прослушиватель мыши в JXTableHeader, и хотя я добавляю свой собственный прослушиватель в JXTableHeader, срабатывает BasicTableHeaderUI, и хотя я сбрасываю порядок сортировки в методе mouseClick моего слушателя, BasicTableHeaderUI сразу устанавливает тот же столбец для сортировки в своем собственном методе mouseClick. Проблема № 2: я не могу использовать потребление для события, так как слушатель BasicTableHeaderUI просто игнорирует флаг.
Как я могу предотвратить запуск прослушивателя BasicTableHeaderUI чистым способом?
Решение:
Это решение, которое я выбрал. Я реализовал оболочку для MouseListener BasicTableHeaderUI и изменил ее на свою оболочку в updateUI. Моя оболочка просто игнорирует вызов mouseClick обернутого MouseListener при определенном условии (-> resetSortOrder).