我得到了一个我不确定如何解决的任务。
我必须使用.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
答案 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。