更新后JTable没有显示结果?

Mik*_*ike 1 java swing jtable jscrollpane

我在从数据库中获取结果后在运行时创建一个表.我的应用程序流程是这样的.

  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();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在调用setResultTable后,结果没有出现在表中.请帮帮我.提前致谢 !!!

Hov*_*els 6

您似乎将JTable直接添加到JScrollPane.如果是这样,这是不正确的,您将要更改此项,以便您实际将表添加到滚动窗格的视口中:

tableScroll.getViewport().add(documentTable);
Run Code Online (Sandbox Code Playgroud)

执行此操作后无需重新绘制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);

   }
}
Run Code Online (Sandbox Code Playgroud)

如果这没有帮助,你还要告诉我们到底发生了什么,你看到了什么,如果可能的话,为我们提供一个小的可编译的可运行程序来证明你的问题,一个SSCCE