Java, How to refresh JTable in one frame from another frame如何按下按鈕時從另一個框架刷新JTable?
How to refresh a JTable after database operations without frame reload?
我知道非常類似的問題已經被問。然而,沒有提供的答案解決了我的問題。
所以我有一個應用程序在Java中處理與幾個數據庫的交互。在程序中,您可以添加記錄,更改Jtable中顯示內容的條件並編輯已存在的記錄(例如,更改客戶端的名稱)。
當我點擊了「升序」複選框,它反轉只是因爲它是應該做的行。
所以在這裏作爲我按下上的複選框或任何所示的其他按鈕的JTable中被更新。
當您按下一行時,包含該行更多信息的另一個框架顯示出來。你應該能夠在完成時編輯名稱/設置等等。這是有效的,因爲當我檢查數據庫時,我發現 所做的更改已經應用。同樣,如果我點擊刷新按鈕。
然而,當我按下「完成/編輯」了JTable直到我做手工的東西(像的刷新按鈕)更新的。
這裏是在外部JFrame中使用的代碼。
private void AlterTransactionMousePressed(java.awt.event.MouseEvent evt) {
EditTransaction();
}
private void EditTransaction(){
GUImannager.RefreshServTable();
}
//In the GUImannager class
public static void RefreshServTable(){
System.out.println("RefreshServTable Method has been summoned.\n");
MainGUI.TableRefresher();
//The MainGUI is a static variable which contains the JFrame object of the main frame that is summoned that contains the core of the programs such as the pictures as i used.
}
TableRefresher方法與單擊刷新按鈕時使用的方法完全相同。它所做的是啓動一個線程,在此代碼被傳喚。
//Gets the data from the database based on conditions.
TableModel model = new DefaultTableModel(TransData, Colnombs);
ServiceTable.setModel(model);
ServiceTable.revalidate();
ServiceTable.repaint();
TableContainer.setViewportView(ServiceTable);
而這段代碼無關緊要地工作。但是,無論何時從外部來源召喚它都不起作用。它打印出表明它已被召喚的文本,但它不會在外部召喚時刷新表格,只有當通過相同JFrame中的某些事物(例如「刷新」按鈕)進行召喚纔會起作用。
我試過讓代碼「listnens」改變,然後更新,但雖然這顯然是根據系統召喚出來的,但並沒有以我想要的方式影響程序。
第二個JFrame是在另一個類中,但即使當我把它作爲子類或在同一個文件中它仍然無法工作,所以我懷疑這個問題與處理多個JFrame有關。
我知道這是一個非常複雜的問題,雖然幾乎相同的問題已經被問到,但他們沒有包含任何適合我的答案。
數據是手動檢索,因此該表沒有「綁定」到任何數據庫(這是因爲我在SQLite源和MySQL源之間切換)。
如果有任何更多的信息/代碼是必要的,我會高興地提供它,任何解決這個問題的嘗試將非常感激。如果這是一個簡單的問題,我很抱歉,因爲我還沒有在軟件編程方面獲得那麼多經驗。
誠懇...
//奧維努德斯特倫。
我試過使用fireTableDataChanged方法,但它沒有奏效。這是否有什麼區別,我爲此召喚了一條新線索? – 2015-02-11 14:26:18
新線程或新的或另一個JFrame?這是一個區別。如果它只是一個其他的JFrame,根本就沒有任何區別。在您的TableRefresh中,不要創建一個完整的新模型,只需在模型上調用fireTableDataChanged()方法,並且GUI將自行更新(如果模型是JTable的實際基礎模型)。如果它是另一個線程而不是任何副作用可能發生,導致Swing不是線程安全的。但我完全無法告訴你。也許這會幫助你:http://stackoverflow.com/questions/13407418/threads-and-jtable – NwDev 2015-02-11 14:38:43
非常感謝你的努力,但我似乎沒有任何運氣。 – 2015-02-13 10:25:51