我是Java新手并试图了解各种功能,我目前的头痛是MouseListeners
我有一个JTabbedPane,每个标签都有三个标签(JScrollPane加上一个JTable)我现在需要检测哪个标签被点击哪一行,我遇到了问题。
我是否需要在第一个窗格中放置一个侦听器并检测哪个选项卡已被选中?或者我在每个JTable上放一个?
我尝试了以下代码,但由于某种原因,当我运行它时会出错
standardTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JTabbedPane aPane = (JTabbedPane)e.getComponent();
if(e.getClickCount()==2) {
detectMouseClickRow(aPane, e);
} // do this if double click
if(e.getClickCount()==1) {
detectSingleClick(aPane, e);
} // Do this if its a single click
}
});
当我运行上面的Netbeans警告我一个问题,但没有列出在哪里,所以我忽略它,它在detectMouseClickRow(aPane,e)的错误;或其单击变体
ClassCastException:javax.swing.JTable无法强制转换为javax.swing.JTabbedPane
我可以使用指针,因为我在这里误解了这个并不是最好的方法吗?
答案 0 :(得分:0)
您在standardTable上添加了MouseListener
,我假设它是JTable
,现在从MouseEvent
e.getComponent()
检索JTable
e的组件时,您将获得JTabbedPane aPane = (JTabbedPane)e.getComponent();
1}}。因此,投射JTable aPane = (JTable)e.getComponent();
不正确。
实际上,它应该是JTabbedPane
现在,您可以使用JTable
从getParent()
获取JTable
,具体取决于您将MainDoc
添加到标签式窗格的方式。
答案 1 :(得分:0)
谢谢你们我慢慢地把它整理出来, 是的,因为它是一个JTable,所以在转换为JTabbedPane时出错 我会删除这个问题,但我找不到任何办法,。
对不起。