JTable的通用类

时间:2016-08-02 18:58:38

标签: java class generics jtable

我得到了一个我不确定如何解决的任务。

我必须使用.txt文档中的行填充JTable。问题是有多个.txt文档,它们具有更多或更少的JTable行和列。

例如: 在cars.txt里面:

id;hp;price;quantity
1;100;7000;5
4;120;20000;2
7;300;80000;3

在bikes.txt里面

id;price;quantity;color;year
3;80;20;red;2010
5;200;40;green;2011
12;150;10;blue;2007

因此,当选择.txt时,JDialog将弹出一个JTable,其中将显示数据。 我以为我可以创建一个"类Anything"我有一个实例变量String [] [],我可以通过读取.txt定义大小,并在将数据保存在一个数组后,我可以计算它有多少行和多少列, 使用cars.txt示例,它将是:String [4] [3]

这是一种很好的合作方式吗?或者有更好的方法吗?

感谢您的帮助:D

2 个答案:

答案 0 :(得分:1)

你的问题对于你想要具体做什么有点模糊。

您想简单地用所有数据填充表格吗?或者您只想使用某些列?当您选择文本文件时,您知道它们具有哪些列名称(您是否可以对此进行硬编码)。

一个良好的开端将是......

已编辑这里是解决方案.....

    DefaultTableModel dtm = (DefaultTableModel)yourJTable.getModel(); 
    // This divides your txt file to a string array divided by rows
    string[] RowSplit = yourTxtFileThatYouRead.split("\n"); 

//this assumes that your txt file contains the column headers
    dtm.setColumnHeaders(RowSplit[0].split(";")); 


    //Start the iteration at 1 to skip the column headers
    for (int i = 1; i < RowSplit.length; ++i) {
    dtm.addRow(RowSplit[i].split(//some delimeter //));

dtm.fireTableDataChanged();

第一部分设置列标题,并启用表格列大小的变化。

第二部分依次添加行。

已编辑格式 已编辑以获得更好的答案

答案 1 :(得分:1)

How to Use Tables: Creating a Table Model所示,您可以扩展AbstractTableModel来管理任意维度的模型。让您的模型管理List<List<String>>。将每个文件的第一行解析为由List<String>getColumnCount()的实现访问的getColumnName()。将后续行解析为每行List<String>个;在List的实施中访问此类行的getValueAt()。管理Map<String, String>的相关示例显示为here。虽然更复杂,但您可以将Class Literals as Runtime-Type Tokens用于非字符串数据;在getColumnClass()的实现中返回令牌,以获取支持类型的默认render and editor。最后,考虑其中一个file based JDBC drivers for flat files