2010-01-25 45 views
3

空表我想有一個JFrame窗口的發言權,10列的初始空表。然後,通過鼠標單擊生成的操作事件應填充表中的10個或更少的項目,將表格的已用行留空。這應該怎麼做?在填充的Java Swing

+0

我沒有要求的全部代碼,只是如果你能告訴我,如果可能的話,應該使用哪種方法準確...謝謝! – Anto 2010-01-25 11:06:08

+0

「10或更少」是一種模糊的... – 2010-01-25 12:02:07

+0

你想填表,然後清空它?你能更詳細地描述它嗎? – marionmaiden 2010-01-25 12:11:29

回答

2

對於這一點,你應該創建一個的DefaultTableModel你想要的數據,併爲空行,你填寫的對象表值。

It's一些代碼更簡單:

由於我不知道你的數據從何而來,我認爲它是有來自矩陣不到10行:

String data[][] = {{"a","b"}, {"c","d"}}; 

您必須創建一個包含您以前的數據的新矩陣和用於完成表格的單元格。最後你會有這樣的事情。

Object data2[][] = {{"a","b"}, 
{"c","d"}, 
{null,null}, 
{null,null}, 
{null,null}, 
{null,null}, 
{null,null}, 
{null,null}, 
{null,null}, 
{null,null}}; 

這樣你就會有一個10x2矩陣來填充你的表格。現在,您可以更新的DefaultTableModel

yourTable.setModel(
     new DefaultTableModel(data2, new String [] {"Column1Title", "Cloumn2Title"}) { 
     Class[] types = new Class[] {String.class,String.class}; 
     boolean[] canEdit = new boolean[] {true, true}; 
     @Override 
     public Class getColumnClass(int columnIndex){ return types [columnIndex];} 
     @Override 
     public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit [columnIndex];} 
}); 

就是這樣。我認爲你沒有問題來創建你的對象矩陣。

4

我建議通過繼承AbstractTableModel定義自己TableModel實現。這樣,您可以用任何合適的集合(例如java.util.List)「退回」您的模型。當觸發ActionEvent時,通常會修改您的基礎集合,然後觸發TableModelEvent以使JTable重新繪製。

+0

你能舉個簡單的例子嗎? – Anto 2010-01-25 16:05:58

+0

@Vijay:http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data – trashgod 2010-01-25 16:25:59

0

除了創建自己的TableModel由亞當斯基解釋的,可以直接使用javax.swing.table.DefaultTableModel
它有一個構造函數這需要作爲參數和方法來管理數據(addRowinsertRowsetDataAt,...)列和行數。

我寧願創建一個自己的TableModel,除非它是一個非常簡單的程序/功能。