2011-10-18 49 views
1

我从数据库中获取结果后,在运行时创建一个表。我的应用程序的流程就是这样。更新后JTable未显示结果?

  1. 正在初始化一个空的JScrollPane(); JScrollPane tableScroll = new JScrollPane();
  2. 从数据库中获取结果;
  3. 更新结果JTable和添加JTable中JScrollPane的使用下面的方法:

代码:

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