簡體   English   中英

是否有一個簡單的解決方案可以動態地將列和可編輯行添加到Java中的表模型中?

[英]Is there a simple solution to adding columns & editable rows dynamically to a table model in Java?

我一直在尋找幾個小時,並且無法找到任何干凈整潔的解決方案來動態地將列/元素添加到Java中的表模型中。 也許我是一個不好的研究員,我不知道。 這讓我很沮喪,我讀了兩本不同的書,發現這個主題完全沒有。 我掠奪了谷歌龐大的數據庫,沒有發現任何用處。 我已經找到了一些“解決方案”來添加一行,但它們看起來並不那么好。 我希望能夠動態插入行和列。 我已經投入了5杯茶和我的大部分心理穩定性來找到這個解決方案,沒有勝利。

我在考慮這樣的事情:

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

也許我的斗爭有一些越來越簡單的解決方案,但我似乎無法自己找到它。 我對Java很熟悉(2-3個月的經驗),所以我的知識並不像在這個主題上那么遠。 任何幫助,將不勝感激。

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

以下代碼對我來說很好。 如果您已經實現了自己的表模型,則可能是它沒有正確地觸發通知。

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"});     
    }
}

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

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM