2013-11-27 87 views
-1

我有一個JPanel,我需要打開其他窗口(JFrame,JDialog,JOptionPane),它具有JTable。手動填充JTable需要將其數據返回給JFrame。我如何設置JDialog中的JTable

這怎麼做?

回答

3

基本上,你在你的JDialog,在JTable中的位置,像這樣(返回對象[] []只是一個例子,你可以返回任何類型的集合),以實現一個方法:

public Object[][] showDialogWithTable() { 
    //do some needed actions 
    setVisible(true); 

    //when user closes JDialog with a JTable collect data from the table 
    Object[][] data = collectData(); 

    return data; 
} 
2

您可以使用模型類(例如,擴展AbstractTableModel的模型類)。你的JPanel創建一個最初爲空的模型實例。您可以將實例傳遞給另一個窗口(擴展JFrame,JDialog,...的構造函數),並從那裏將它傳遞給JTable。

JTable的編輯反映在模型中,您的主窗口仍然可以通過模型實例訪問數據。

+0

主要問題是我無法爲第二個JTable創建窗口。第二個JFrame不起作用,因爲它是在其他線程中創建的,所以主JFrame仍在工作,不會等待數據。 並與JOptionPane的情況下 - 我只是不能用JTable生成它 – crzbt

2

需要查看更新的JFrame中的視圖應將自己添加到表格的模型中,作爲TableModelListenerTableModelEvent將識別更改的內容。