我想为我的一些JTables实现一个ListSelectionListener。简单地说(现在)ListSelectionListener应该简单地返回被选择的单元格的文本。将对象投射到JTable?
我的程序设计有几个JTables,我希望有一个ListSelectionListener为他们工作。在ListSelectionListener的ValueChanged事件我认为这是可能做这样的事情:
private class SelectionHandler implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e)
{
JTable table = (JTable)e.getSource();
String data = (String) table.getValueAt(table.getSelectedRow(), 0);
// Print data
}
}
我用下面的代码来获取SelectionHandler问题与表在幕后工作:
fbTable.setCellSelectionEnabled(true);
ListSelectionModel cellSM = fbTable.getSelectionModel();
cellSM.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cellSelectionModel.addListSelectionListener(selectionHandler);
当我运行该程序,我得到一个ClassCastException错误:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.DefaultListSelectionModel cannot be cast to javax.swing.JTable
at cardboardfantasy.CardboardFantasyView$SelectionHandler.valueChanged(CardboardFantasyView.java:360)
// This is the line in question: JTable table = (JTable)e.getSource();
有没有办法做这样的事情?我想到的一个解决方案是将事件源(e.getSource())与我所有的JTable进行比较,以查看它们是否相同(块大),然后在该块内调用.getValueAt,但会使代码如果要添加或删除表格,将来会很困难。
你应该可以做这样的事情。你有两条线投。哪一行抛出'ClassCastException'?什么是对象的实际类型(异常消息应该说一些其他类名)? – erickson 2010-05-18 19:37:32
我想“e”应该是一个事件。那么,你是否能够弄清楚,实际的来源是什么?是否有东西叠在桌子上,这会成为事件的根源?这可能有助于发布更多的代码。 – 2010-05-18 19:37:42
您没有提供必要的信息。请在你的问题中包含完整的错误信息。 – erickson 2010-05-18 19:44:45