我一直在寻找几个小时,但却找不到任何整洁的东西。清理解决方案,以动态方式将列/元素添加到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答案 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数组。
这样做只需添加数据行即可向用户显示数据。
希望它有所帮助!