2017-07-05 9 views
0

私は、カスタムTableModelでJTableを表示する単純なJava Desktopアプリケーションを持っています。私のTableModelの列モデルを動的に変更する方法

ブール変数の基数で、私は別の列を持つテーブルを表示したいと思います。 しかし、私はこれを行うことができません。

This is my code: 

static String[] ColName = { "Cod.Articolo","Nome Articolo","Cod.Barre", "Qtà.iniziale","Scontrini(-)","Bolla(-)","Fattura(-)","DDT(-)","NC(+)","Carico(+)"}; 
static String[] ColNameNero = { "Cod.Articolo","Nome Articolo","Cod.Barre", "Qtà.iniziale","Scontrini(-)","Scontrini Nero(-)","Bolla(-)","Fattura(-)","DDT(-)","NC(+)","Carico(+)"}; 


public void creaTabellaMerci(boolean isNero){ 
    try{ 
     if(isNero) 
      tableMovimentiMagazzinoMerci = new MyTableModelMovimentiMagazzinoMerci(ColNameNero,isNero); 
     else 
      tableMovimentiMagazzinoMerci = new MyTableModelMovimentiMagazzinoMerci(ColName,isNero); 

     tableMovimentiMerci = new DefaultTableCustom(tableMovimentiMagazzinoMerci); 
     sorter = new TableRowSorter<MyTableModelMovimentiMagazzinoMerci>(tableMovimentiMagazzinoMerci); 
     tableMovimentiMerci.setRowSorter(sorter); 
     jScrollPaneAmministrazione = new javax.swing.JScrollPane(); 
     jScrollPaneAmministrazione.setViewportView(tableMovimentiMerci); 
     jScrollPaneAmministrazione.setPreferredSize(dTabella2); 
     jScrollPaneAmministrazione.getViewport().add(tableMovimentiMerci); 
     tableMovimentiMagazzinoMerci.fireTableDataChanged(); 
     tableMovimentiMerci.repaint(); 
    }catch(Exception e){ 
     log.logStackTrace(e); 
    } 
} 

初めて、私は変数isNero = trueでメソッドを呼び出します。 2回目は同じメソッドを変数isNero = falseで呼び出しますが、列は変更されません。

どうすれば修正できますか?

+1

ショーコードを – XtremeBaumer

答えて

1
jScrollPaneAmministrazione = new javax.swing.JScrollPane(); 

新しいJScrollPaneを作成しますが、スクロールペインをフレームに追加することはありません。参照変数の値を変更しても、コンポーネントはフレームに追加されません。

新しいJTableまたはJScrollPaneを作成しないでください。

代わりに、あなただけの現在のフレームに表示されているテーブルのTableModelです更新することができます: `MyTableModelMovimentiMagazzinoMerci`はまた、あなたが新しいものと古いテーブルを置き換えることを検討すべきであるため

//tableMovimentiMerci = new DefaultTableCustom(tableMovimentiMagazzinoMerci); 
tableMovimentiMerci.setModel(tableMovementiMagazzinoMerci); 
sorter = new TableRowSorter<MyTableModelMovimentiMagazzinoMerci>(tableMovimentiMagazzinoMerci); 
tableMovimentiMerci.setRowSorter(sorter); 
//jScrollPaneAmministrazione = new javax.swing.JScrollPane(); 
//jScrollPaneAmministrazione.setViewportView(tableMovimentiMerci); 
//jScrollPaneAmministrazione.setPreferredSize(dTabella2); 
//jScrollPaneAmministrazione.getViewport().add(tableMovimentiMerci); 
//tableMovimentiMagazzinoMerci.fireTableDataChanged(); 
//tableMovimentiMerci.repaint(); 
関連する問題