是否有一个简单的解决方案来添加列和&可编辑的行动态到Java中的表模型?

时间:2012-08-13 18:37:10

标签: java swing jtable

我一直在寻找几个小时,但却找不到任何整洁的东西。清理解决方案,以动态方式将列/元素添加到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

2 个答案:

答案 0 :(得分: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"});     
    }
}

答案 1 :(得分:0)

我不知道你要做什么但是,我认为总是更好地设置表的模型。只有在编写电子表格或类似内容时,才能编写按钮或上下文菜单以添加新列或行。我的意思是,您应该定义标头并调用方法defaultTableModel.setColumnIdentifiers(Object[] newIdentifiers)。舒尔,newIdentifiers对象数组是一个String数组。 这样做只需添加数据行即可向用户显示数据。

希望它有所帮助!