Java JXTableHeader重置器在班次和x2B;点击

Java JXTableHeader重置器在班次和x2B;点击,java,swing,swingx,jxtable,Java,Swing,Swingx,Jxtable,我使用JXTable和JXTableHeader来显示可排序的表。JXTableHeader支持一种重置排序顺序的方法,方法是按住shift键,同时左键单击标题。问题在于:这种重置模式不可能在atm上实现,因为Java Swing的BasicTableHeaderUI向JXTableHeader添加了一个鼠标侦听器,即使我将自己的侦听器添加到JXTableHeader,BasicTableHeaderUI也会被触发,尽管我在侦听器的mouseClick方法中重置了排序顺序,BasicTableH

我使用JXTable和JXTableHeader来显示可排序的表。JXTableHeader支持一种重置排序顺序的方法,方法是按住shift键,同时左键单击标题。问题在于:这种重置模式不可能在atm上实现,因为Java Swing的BasicTableHeaderUI向JXTableHeader添加了一个鼠标侦听器,即使我将自己的侦听器添加到JXTableHeader,BasicTableHeaderUI也会被触发,尽管我在侦听器的mouseClick方法中重置了排序顺序,BasicTableHeaderUI立即将同一列设置为使用自己的mouseClick方法进行排序。问题2,我不能在事件上使用consume,因为BasicTableHeaderUI的侦听器只是忽略了该标志

如何防止BasicTableHeaderUI的侦听器以干净的方式被触发

解决方案:


这就是我所采用的解决方案。我为BasicTableHeaderUI的MouseListener实现了一个包装器,并将其更改为updateUI上的包装器。我的包装器只是忽略包装好的MouseListener在特定条件下的mouseClick调用(->resetSortOrder)。

另请参见
table.setSortOrderCycle(升序、降序、未排序)从JTableHeader中删除所有MouseListener,所有MouseEvent和KeyEvents都可以是evt.consume(),或者重定向,或者fireXxxXxxx,用于@kleopatra发布的解决方案和代码搜索,谢谢mKorbel,类似的东西可能真的有效,你不太好…谢谢Robin和Guillaume,但我真的需要原始行为。。。