2011-10-25 11 views
0

空のTableModelがあります。このモデルをJTableに設定すると、行はありません。コンボボックスエディタで値を選択できる空の行を1つ作成します。ユーザーがnot null値を選択すると、2行目が追加され、モデルに1つのオブジェクトが追加されます。モデルにこの行のオブジェクトがない場合、空の行を追加するにはどうすればよいですか?JTableの行を編集してテーブルモデル値を追加する方法は?

空の行ではありません
+0

ただTableModelに行を追加することはできませんか?この質問が完全にはっきりしていないので、コードを投稿してください。 [DefaultTableModel](http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/table/DefaultTableModel.html#addRow(java.lang))というTableModelの実装を見てみましょう。オブジェクト[]))。 – styfle

答えて

4

のTableModelがあなたの友人である、JTableのセルにnull値を追加することができます。値を設定した後に行を追加する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から "update"間もなくSwingX TableUtilsを使わずに行うこと – kleopatra

+0

は、このマジックボックスを簡素化し、かなり修復することに同意しました:-) – mKorbel

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

チュートリアルでより約JTableJComboBox as an Editor、および例here

+1

TableModelの値は空であるかもしれません(null値を返します) - その時点でコンボのポップアップには値!= nullがあります(私はOPを正しく理解していればそれほど多くはありません:-) – kleopatra

関連する問題