JTable 更新后不显示结果?

发布于 2024-12-10 14:23:06 字数 540 浏览 0 评论 0原文

从数据库获取结果后,我在运行时创建一个表。我的申请流程是这样的。

  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 后结果没有出现在表中。请帮我解决这个问题。提前致谢 !!!

I am creating a table at run time after fetching the result from the database. The flow of my application is like this.

  1. Initializing a empty JScrollPane(); JScrollPane tableScroll = new JScrollPane();
  2. Fetching result from the database;
  3. Updating result to JTable and adding JTable to JScrollPane using following method:

Code:

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

my problem is that after calling setResultTable the result are not appearing in the table. Please help me with that. Thanks in advance !!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不吻晚风 2024-12-17 14:23:06

您似乎将 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

You appear to be adding the JTable directly to the JScrollPane. If so this isn't correct and you'll want to change this so that you're actually adding the table to the scroll pane's viewport:

tableScroll.getViewport().add(documentTable);

There is no need to repaint the JScrollPane after doing this.

For example:

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);

   }
}

If this doesn't help, you'll want to also tell us exactly what happens, what you see, and if possible supply us with a small compilable runnable program that demonstrates your problem, an SSCCE

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文