我正在嘗試爲我的JTable創建自己的自定義TableModel(因爲我想將JCheckBox的一行合併到我的表中)。 JScrollPane也是如此。在我試圖合併JCheckBox和自定義AbstractTableModel之前,如果我使用默認(Object [] [],Object [])構造函數,則JTable將顯示正常。我在Sun的JTable教程中讀到,那些構造函數使用默認方式將所有數據視爲字符串。獲取帶有自定義表模型的JTable以顯示在JScrollPane中
然後我創建我的自定義AbstractTableModel上,並從這個去:
JTable table = new JTable(dataArray, col);
這樣:
JTable table = new JTable();
我假定這將呼叫嘗試與定製類創建的JTable它擴展了AbstractTableModel,但現在沒有在JScrollPane中顯示出來。
我用錯了嗎?我幾乎從Sun教程拷貝了代碼,只改變了涉及的數據文件的名稱。我也把這個方法放在同一個類中。有沒有其他方法來確保您的表格是使用您的自定義表格模型創建的?任何見解將不勝感激。
我想這就是我所困惑的。 Sun網頁上的JTable信息指出: 有兩個直接接受數據的JTable構造函數(SimpleTableDemo使用第一個): JTable(Object [] [] rowData,Object [] columnNames) JTable(Vector rowData, Vector columnNames) 然後它聲明: 這些構造函數的優點是它們易於使用。但是,這些構造函數也有缺點: 它們將所有數據類型視爲相同(如字符串)。 – MarcZero 2010-02-14 01:37:24
所以閱讀,我的印象是,我必須創建一個擴展AbstractTableModel的自定義類,並且不知何故,我創建的表將使用它而不是默認的構造函數。如果我使用JTable(Object [] [],Object [])構造函數,它將每個單元格視爲字符串,因此我「假設」調用沒有構造函數的方法:JTable()將使用我創建的自定義單元格,但我的屏幕現在是空白的。我可以回到默認的構造函數,它顯示得很好,但我似乎無法讓它使用我的自定義表模型。 – MarcZero 2010-02-14 01:37:44
@MarcZero:查看我答案中的編輯。 (如果沒有意義,可能會發布一些更多的代碼,我覺得這種感覺可能會在你想要做的事情中錯過某些東西......) – Ash 2010-02-14 02:02:43