repaint(),revalidate(),invalidate()。怎么用?

时间:2012-10-18 13:14:29

标签: java swing jtable panel repaint

我有桌子的显示有问题。我的表最初有行。但是下次如果我做一些操作,我的表列表就会变空。因此,当我将该模型添加到表中时,表格为空。它是empty但显示在表格区域显示白色。

最初表格如下图所示。

First Table

然后我需要调用一些动作,如果该动作返回一个空列表,那么我正在创建一个新动作 Jtable与该列表并将其放在面板上。但看起来如下。

Empty Table

以下是我接下来要做的方法,

pnlRight.removeAll();
//pnlRight.invalidate();
// pnlRight.revalidate();
// pnlRight.repaint();
pnlRight.add(new JScrollPane(table), BorderLayout.CENTER);
pnlRight.invalidate();
pnlRight.validate();
pnlRight.repaint();

我已阅读此@kdgregory上的一篇帖子,删除后我应该调用上述方法。这件奇怪的事情正在发生。如果我只调用repaint(),那么甚至连面板中都缺少列名(理想情况下,在这种情况下不应该这样做。)请解释这有什么问题。

1 个答案:

答案 0 :(得分:4)

  • 我认为没有(合乎逻辑的)理由,删除JTableJScrollPane)并将其放在另一个JTable

    < / LI>
  • 创建JTable并将所有数据存储到XxxTableModel

  • 重置XxxTableModel,然后加载不同结构的其他数据

  • 使用CardLayout切换视图

修改

  • 以下代码
  

pnlRight.revalidate();

     

pnlRight.repaint();

没有引起任何问题,此代码中没有问题....