2013-03-27 76 views
1

我有一個具有衆多JInternalFrames的swing應用程序。其中一個Load形式的數據庫負載數據。我需要它,以便在動作事件中,JInternalFrames完全重新載入到與第一次顯示來自數據庫的新數據時相同的狀態。我已經嘗試了幾種選項,如:重新加載JinternalFrame Java

revalidate(), repaint(); updateUI() 

但他們都沒有工作。

public void actionPerformed(ActionEvent ae) { 
     Object obj = ae.getSource(); 
     if (obj == btnAdd) { 

        try { 
        .................. 
        revalidate(); 
       // repaint(); 
        //updateUI(); 

        } catch (Exception db) { 
         JOptionPane.showMessageDialog(this, db, 
           "Error", JOptionPane.ERROR_MESSAGE); 
     } 
     } 
    } 

如何在不關閉的情況下重新加載整個JInternalFrame?

+0

你可以嘗試調用內部框架的getContentPane()。validate() – dinukadev 2013-03-27 12:59:16

+0

否這不起作用。我試過了 。 – ErrorNotFoundException 2013-03-27 13:24:47

回答

3
  1. revalidate() & repaint()add, remove, modify(change sizing, properties not value)JComponent(縣)已可見GUI

  2. revalidate() & repaint()可能是所有更改可見的Swing GUI後最後的代碼行做有效的方法,

  3. revalidate() & repaint()還沒有重新加載da TA從數據庫到JComponents中已經可以看到Swing GUI的價值,那麼你有Concurency in Swing

  4. 使用Runnable#Thread(需要wrapp全部輸出到Swing GUI的成invokeLater)或SwingWorker的問題,也有你的工作有趣的方法publish()proccess()done()和,以及這些方法將通知EDT默認

+0

你有我能看的例子嗎?是新的。 – ErrorNotFoundException 2013-03-27 13:25:22

1

作爲替代更換視圖在JInternalFrame,所建議here,更新該視圖偵聽的對應模型。對於example,具有JTableJInternalFrame可以被賦予不同的TableModel