“线程中的异常”;AWT-EventQueue-0“;java.lang.ClassCastException:javax.swing.JTable

“线程中的异常”;AWT-EventQueue-0“;java.lang.ClassCastException:javax.swing.JTable,swing,exception,jtable,java,Swing,Exception,Jtable,Java,我有一个程序,运行时生成一个swing格式的表,其中包含一组复选框,可以选择或取消选择 当我单击“全选”选项卡时,我可以选择/取消选择下面的所有其他复选框,但当我单独选择以下复选框之一时,我会出现此错误: > Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable at com.tps.charts.CheckBoxHeader.handleClickEvent(JTa

我有一个程序,运行时生成一个swing格式的表,其中包含一组复选框,可以选择或取消选择

当我单击“全选”选项卡时,我可以选择/取消选择下面的所有其他复选框,但当我单独选择以下复选框之一时,我会出现此错误:

> Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable at com.tps.charts.CheckBoxHeader.handleClickEvent(JTableHeaderCheckBox.java:152) at com.tps.charts.CheckBoxHeader.mouseClicked(JTableHeaderCheckBox.java:168) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) mousePressed...... at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
在第152行:
JTableHeader=(JTableHeader)(e.getSource())假设事件位于表标题上。您需要检查事件源的类,看看它是在标题上还是在单个复选框上。

第152行:
JTableHeader=(JTableHeader)(e.getSource())假设事件位于表标题上。您需要检查事件源的类,以查看它是否位于标题或单个复选框上。

您正在将事件源强制转换为
JTableHeader

JTableHeader header = (JTableHeader) (e.getSource());

单击单元格时,源是一个
JTable
。我会有两个不同的监听器用于标题和单元格选择,或者您可以通过在鼠标单击监听器中检查
event.getSource()instanceof…
来进行黑客攻击。

您正在将事件源强制转换为
JTableHeader

JTableHeader header = (JTableHeader) (e.getSource());

单击单元格时,源是一个
JTable
。我将有两个不同的侦听器用于标题和单元格选择,或者您可以通过在鼠标单击侦听器中检查
event.getSource()instanceof…
来进行破解。

尝试通过e.getComponent().getName()检查组件每次都将组件名称返回为null。如何检查组件名称或类型?使用
e.getSource().getClass().getName()
e.getSource()实例JTableHeader
是的,谢谢,现在我正在检查组件名称(JTable或JTableHeader)然后根据组件执行单独的鼠标按下操作方法。现在我需要检查所有单元格(复选框)是否完全选中,并基于此需要选择/取消选择JTableHeader(复选框)。我被困在这里。感谢帮助…尝试通过e.getComponent()检查组件。getName()每次都会将组件名称返回为null。如何检查组件名称或类型?使用
e.getSource().getClass().getName()
e.getSource()instanceof JTableHeader
是的,谢谢,现在我正在检查组件名称(JTable或JTableHeader),然后根据组件执行单独的鼠标按下操作方法。现在我需要检查所有单元格(复选框)是否已完全选中,并根据此需要选择/取消选择JTableHeader(复选框全部)。我被困在这里。感谢帮助…IMO,这在模型视图索引和耦合方面存在明显缺陷。请尝试移动列以查看效果。另请参见此。IMO,这在模型视图索引和耦合方面存在明显缺陷。请尝试移动列以查看效果。另请参见此。
JTableHeader header = (JTableHeader) (e.getSource());