2015-04-14 83 views
0

我不知道如何指定我的問題,因爲我無法考慮確切的單詞。需要關於JTable的幫助?

但我會盡量做到儘可能具體。

我在做什麼:

我提出它使用一個JTable來獲取用戶數據,並將其輸送到數據庫中的數據庫應用程序。

我的問題: 在我的應用程序,每當用戶點擊一個JButton代碼從JTable中獲取的條目,並將其提交給數據庫(即我已經將JButton的ActionListener的添加的數據庫操作)。

問題是,無論何時用戶在JTable的單元格中鍵入條目並且未命中「enter」或選擇另一個「row」,代碼都不會獲取該條目。

我會盡量具體:

我想說的是,假設用戶鍵入的第1行的第2列,和他打的JButton就沒有按下回車JTable的單元格或選擇不同的行,然後

model.getValueAt(0,1).toString ///is returning null because intially nothing was there. 

但是,如果按下回車鍵或選擇不同的行,則會生成輸入值。

那麼,如何在按住JButton的同時將所有輸入的值獲取到JTable的單元格中。

我不知道確切的詞來描述這個問題或問題,所以我不能正確地框架問題。

謝謝!

+0

少一些感嘆號請 – ControlAltDel

+0

按照您的要求,我做到了。 –

回答

2

發現收集模式的變化和按鍵按下讓你的SQL。

TableModel model = table.getModel(); 
model.addTableModelListener(new TableModelListener() { 
    @Override 
    public void tableChanged(TableModelEvent e) { 
     ... e.firstRow, e.lastRow 
    } 
}); 

或者在Java中8

model.addTableModelListener((e) -> { 
    ... e.firstRow, e.lastRow 
}); 
+0

確切地說!!!!!!!!!非常感謝!!! –

1

你可以嘗試一些簡單的像添加fireTableDataChanged(),它...「通知,在表中的所有行單元格值可能已改變了所有的聽衆」 你可以在你的JButton行動聽衆稱這或許實現失去焦點聽你的桌子。

更多信息可以在這裏找到 http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html

或者這裏https://docs.oracle.com/javase/tutorial/uiswing/events/focuslistener.html

最後,一個更深入的回答可以幫助你可以在這裏 How to refresh data in JTable I am using TableModel