3

我已经搜索了几个小时,但找不到任何简洁干净的解决方案来动态地将列/元素添加到 Java 中的表模型中。也许我是一个糟糕的研究员,我不知道。这让我很沮丧,我已经阅读了两本不同的书,但在这个主题上一无所获。我已经掠夺了 Google 的海量数据库,但没有发现任何用处。我已经找到了一些添加行的“解决方案”,但它们似乎并不那么好。我希望能够动态插入行和列。我已经投入了 5 杯茶和大部分的精神稳定性来寻找这个解决方案,但没有取得任何胜利。

我在想这样的事情:

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

4

2 回答 2

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"});     
    }
}
于 2012-08-13T18:51:29.660 回答
0

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

希望能帮助到你!

于 2012-08-13T19:13:55.713 回答