2011-10-18 12 views
1

私は、データベースから結果をフェッチした後に実行時にテーブルを作成しています。私のアプリケーションの流れはこうです。更新後にJTableが結果を表示していませんか?

  1. 空のJScrollPane()を初期化します。 JScrollPane tableScroll = new JScrollPane();
  2. データベースからの結果を取得します。
  3. のJTableに結果を更新し、JScrollPaneに使用して、次の方法にJTableのを追加:

コード:

private void setResultTable(Vector documents, Vector header) { 
    TableModel model = new DefaultTableModel(documents, header); 
    documentTable.setModel(model); 
    tableScroll.add(documentTable); 
    tableScroll.repaint(); 
} 

私の問題はsetResultTable結果を呼び出した後の表に表示されないということです。それで私を助けてください。前もって感謝します !!!

答えて

6

JTableをJScrollPaneに直接追加しているようです。これは正しくないと、あなたが実際にスクロールペインのビューポートにテーブルを追加しているように、これを変更したいと思う場合:

tableScroll.getViewport().add(documentTable); 

これを実行した後にJScrollPaneを再描画する必要はありません。例えば

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class AddTableToScroll { 
    public static void main(String[] args) { 
     final JScrollPane sPane = new JScrollPane(); 

     // Sorry Jeanette!! 
     sPane.setPreferredSize(new Dimension(200, 150)); 

     JButton button = new JButton(new AbstractAction("Press Me!") { 

     public void actionPerformed(ActionEvent arg0) { 
      DefaultTableModel model = new DefaultTableModel(new Integer[][] { 
        { 1, 2 }, { 3, 4 } }, new String[] { "A", "B" }); 
      JTable table = new JTable(model); 

      sPane.getViewport().add(table); 

     } 
     }); 

     JPanel panel = new JPanel(); 
     panel.add(sPane); 
     panel.add(button); 

     JOptionPane.showMessageDialog(null, panel); 

    } 
} 

これはあなたが何を参照してください、あなたはまた、正確に何が起こるたちに伝えたいよ、助け、そして可能であれば、実証小さなコンパイル、実行可能なプログラムをご提供していない場合あなたの問題は、SSCCE

+0

:-) optionPaneのアーティファクト使用のために支払うアーティファクトな価格 – kleopatra

関連する問題