2011-07-05 49 views
0

我有觸發與功能:獲得的JTable從它的TableModel

public void tableChanged(TableModelEvent e){...} 

我從TableModelEvent與得到的TableModel:

TableModel model = (TableModel)e.getSource(); 

但我需要的JTable中的TablecellBalloonTip使用cosntructor。我如何從TableModel獲取JTable?

+0

你可能有一點具體,你想display工具提示TableCell?還是別的什麼? – mKorbel

+0

你不能,你不想 - 閱讀一些關於Swing架構的基本文章來理解爲什麼不。不,我不是在開玩笑 - 如果你不知道這些部件應該如何使用,你的搖擺的生活將會是悲慘的;-) – kleopatra

回答

4

你不能直接從事件中獲取它。您將偵聽器安裝到模型中,而不是表本身。該模型沒有對錶格的引用。實際上,同一個模型可能會被多個表格重複使用。所以你必須將引用存儲在其他地方。如果你只有一個表,那麼這應該工作:

final JTable table = new JTable(); 
table.getModel().addTableModelListener(new TableModelListener() { 
    @Override 
    public void tableChanged(TableModelEvent e) { 
    table.doSomething(); 
    } 
}); 

否則,如果你有一個以上的表,你可以簡單地創建他們每個人就像上面單獨的偵聽器。

+0

感謝您的鼓勵 –

1

您需要將JTable實例保存在某處,以備後用。可能會作爲panel實例變量。

在MVC中,Model沒有綁定到特定的視圖或控制器,因此你不能從Model得到它 - 這是非常期待的。