2012-08-13 9 views
3

我一直在搜索幾個小時,並一直無法找到任何整潔的&乾淨的解決方案,以動態添加列/元素到Java中的表模型。也許我是個不好的研究員,我不知道。令我感到沮喪的是,我讀過兩本不同的書,在這個主題上完全沒有發現。我掠奪了Google龐大的數據庫,並沒有發現任何用處。我已經找到了一些「解決方案」來增加一行,但它們看起來並不那麼棒。我希望能夠動態插入行和列。 我已經投入了5杯茶&我的大部分心理穩定性,找到這個解決方案,沒有勝利。是否有一個簡單的解決方案,可以將列和可編輯的行動態添加到Java中的表模型中?

我在想是這樣的:

rageTableModel.addColumn("No need to be upset anymore!"); 
rageTableModel.addRow("No need to be upset anymore!"); 

也許有一些越來越簡單的解決方案,以我的掙扎,但是我似乎無法找到它在我自己的。我對Java非常陌生(2-3個月的經驗),所以我的知識並沒有像這個主題那麼遠。任何幫助,將不勝感激。

編輯:我看到這個「addColumn」方法無處不在,我試圖在我的AbstractTableModel的對象上使用它;沒有勝利。在文檔頁面上我沒有看到任何提及此方法的內容。 http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html

+1

你有可以分享的代碼示例嗎?你正在編寫自己的'TableModel',還是使用'DefaultTableModel'? – 2012-08-13 18:42:59

+0

哦,我試圖使用AbstractTableModel,因爲oracle教程似乎推薦它。 – 2012-08-13 18:44:47

+1

使用http://docs.oracle.com/javase/6/docs/api/javax/swing/table/DefaultTableModel.html,這是絕對沒問題,並有你想要的方法:) – lbalazscs 2012-08-13 18:48:30

回答

2

以下代碼適合我。如果你已經實現了你自己的表模型,可能是它沒有正確地發射通知。

import java.awt.BorderLayout; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 

public class TableTest { 

    public static void main(String[] args) throws InterruptedException { 
     JFrame f = new JFrame(); 

     DefaultTableModel m = new DefaultTableModel(); 
     JTable t = new JTable(m); 

     f.add(new JScrollPane(t), BorderLayout.CENTER); 
     f.setVisible(true); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.pack(); 
     m.addColumn("A"); 
     m.addRow(new String[]{"A1"}); 

     Thread.sleep(1000); 

     m.addColumn("B"); 
     m.addRow(new String[]{"A2", "B2"});  
    } 
} 
+0

工作良好,由於其他人的幫助,已經找到了解決方案,但此代碼示例將幫助其他人誤導Oracle關於此主題的教程。 – 2012-08-13 18:52:59

+0

Oracle教程如何誤導? – MadProgrammer 2012-08-13 19:23:58

0

我不知道你在做什麼,但我覺得總是更好地設置表的模型。只有在您正在編寫電子表格或類似內容時,您纔可以編寫按鈕或上下文菜單以添加新的列或行。我的意思是,你應該定義標題並調用方法defaultTableModel.setColumnIdentifiers(Object[] newIdentifiers)。 Shure,newIdentifiers對象數組是一個String數組。 這樣做只需添加行數據即可將數據顯示給用戶。

希望它有幫助!

相關問題