2010-01-14 46 views
6

我有一個簡單的JTable,有兩列很重要:數量和值(整數)。每次用戶輸入一個新行或更新一行時,每行值必須乘以數量,結果彙總在一起,結果總和顯示在JTable外部的JLabel中。看起來很簡單。除了我不知道我應該尋找什麼事件。像「細胞價值改變」的東西?當我右鍵點擊NetBeans中的JTable時,我看不到這樣的事件或不認識它;)無論如何,在我想出一些奇怪的noobish解決方案之前,我想我可能會問這裏做什麼的正確方法:)在JTable的任何單元格中更改的適當事件是什麼?

回答

6

您應該按here所述添加TableModelListener

也是,在你的聽衆一旦更新了其他單元格值的值編程,您將需要調用model.fireTableCellUpdated讓揮杆瞭解變化

+1

'getModel()'是手術方法。事實上,拋開俗套的演示代碼,它更好地處理模型,然後用它構造一個表格,但從不調用'getModel()'。 – 2010-01-14 06:10:59

3

最後,我設法找到了如何做到這一點在NetBeans與所有的代碼保護,等等。在Design View,Properties和Code選項卡中右鍵單擊JTable,然後在Pre-Adding Code部分添加代碼(在將表添加到容器之前對其進行評估)。

這對我的作品的確切的代碼是這樣的:

table.getModel().addTableModelListener(
new TableModelListener() 
{ 
    public void tableChanged(TableModelEvent evt) 
    { 
     // here goes your code "on cell update" 
    } 
}); 

我知道,湯姆,以上建議從未調用getModel(),但我太新的Java理解爲什麼(護理解釋請..?):),它只是一個例子,無論如何,我加入這個答案只是爲了顯示如何做在NetBeans(感謝pstanton回答什麼做)。因爲我發現很多人在問這個在互聯網和沒有真正的答案(除了「複製受保護的代碼進行的NetBeans保護區,然後自定義表格)。