2012-10-18 45 views
1

我有表顯示的問題。我的表最初有行。但下一次,如果我做了一些操作,我的表格列表變空了。所以當我將該模型添加到表格時,表格是空的。它是empty但顯示器在表格區域顯示白色。repaint(),revalidate(),invalidate()。如何使用它們?

最初表格如下圖所示。

First Table

然後我需要調用一些動作,如果該操作將返回一個空列表,然後我創建一個新的 的JTable與該名單,並把它的面板上。但它看起來像下面這樣。

Empty Table

下面是我follwoing做到這一點的辦法,

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

我已閱讀本@kdgregory後的一個,除去我應該叫上面的方法後。這個奇怪的事情正在發生。如果我只調用repaint(),那麼即使面板中缺少列名(理想情況下,在這種情況下不應該發生這種情況。)請解釋這是什麼問題。

回答

4
  • 不,我認爲沒有(邏輯),原因在於,除去JTable(與JScrollPane),並把有另一種JTable

  • 創建JTable和所有數據存儲到XxxTableModel

  • 復位XxxTableModel,然後在不同的結構

  • 使用載入另一個數據用於切換中間人視圖

EDIT

  • 以下代碼

pnlRight.revalidate();

pnlRight.repaint();

不存在任何引起問題,問題不在此代碼....

+0

對不起對不起。我和你說的一樣。我錯誤地發佈了它。我只得到一個更新的模型。 – Amarnath

+0

@Che調用revalidate(),然後按照mKorbel的建議重新繪製()。如果這不起作用,請編輯您的帖子並使用[SSCCE](http://sscce.org)來重現您的問題。 –

+0

然後有效的我的第二點,不知道什麼是編碼在您的PC – mKorbel