2011-10-25 54 views
0

我有空TableModel。當我將這個模型設置爲JTable時,它沒有行。我想創建一個空行,用戶可以在組合框編輯器中選擇值。如果用戶選擇非空值,則添加第二行,並在模型中有一個對象。如何在模型中沒有對象的情況下添加空行?如何通過編輯JTable行來添加表格模型值?

+0

難道你不能只是將一行添加到TableModel?也許你應該發佈一些代碼,因爲這個問題並不完全清楚。並且看一下名爲[DefaultTableModel]的TableModel的實現(http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/table/DefaultTableModel.html#addRow(java.lang.String)。目的[]))。 – styfle

回答

4

爲TableModel是你的朋友:實現它的setValueAt方法來設置值後添加一行。下面是通過子類化DefaultTableModel來實現此目的的一個示例:

DefaultTableModel model = new DefaultTableModel(1, 3) { 

     /** 
     * @inherited <p> 
     */ 
     @Override 
     public void setValueAt(Object aValue, int row, int column) { 
      super.setValueAt(aValue, row, column); 
      if (shouldAddRow(row, column)) { 
       addRow(new Object[] {}); 
      } 
     } 

     private boolean shouldAddRow(int lastEditedRow, int lastEditedColumn) { 
      // implement your logic here 
      return lastEditedRow == getRowCount() -1; 
     } 


    }; 
+0

for SubClassing + 1 – mKorbel

+0

@mKorbel這是純粹的懶惰(正如你所知道的,我不是一個很好的子類化粉絲:-) - 在TableModelListener中做同樣的事情意味着要正確地從給定的TableModelEvent中解開「更新」,這是我討厭的沒有SwingX TableUtils手頭 – kleopatra

+0

同意,簡單地說,這個魔術盒非常簡單和漂亮地恢復:-) – mKorbel

2
I want to create one empty row, where user can select value in combo box editor. 

是不空行,

可以空值添加到JTable細胞,更在教程的JTableJComboBox as an Editor,和實例here

+1

TableModel的值很可能是空的(又名:返回空值) - 此時只有組合的彈出窗口具有值!= null(如果我正確理解OP,則不會繼續:-) – kleopatra