gpt4 book ai didi

java - 以不同的方式将数据显示到 jtable 中

转载 作者:行者123 更新时间:2023-12-02 07:21:22 27 4
gpt4 key购买 nike

我有一个代码读取文件并存储在数组列表中,然后转换为数组(用于表模型)

我的类正确扩展了abstracttablemodel。

我的所有代码是:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ReadFileToList extends AbstractTableModel{
String[] col={"Fname","Lname","Number"};
List<String> data=new ArrayList<String>();
String[][] Arraydata;

public ReadFileToList(){
try{
FileReader fr=new FileReader("D:\\AllUserRecords.txt");
BufferedReader br=new BufferedReader(fr);
String line;
while((line=br.readLine()) !=null){
data.add(line);
}
br.close();
Arraydata=(String[][]) data.toArray();
}
catch(IOException ioe){
ioe.printStackTrace();
}
}

@Override
public String getColumnName(int colu){
return col[colu];
}

public int getRowCount() {
return Arraydata.length;
}

public int getColumnCount() {
return col.length;
}

public Object getValueAt(int rowIndex, int columnIndex) {
return Arraydata[rowIndex][columnIndex];
}
}

我的主类是ReadFileToListM:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class ReadFileToListM {
ReadFileToList rftl=new ReadFileToList();
public ReadFileToListM(){
JFrame frame=new JFrame();
JTable table=new JTable(rftl);
JPanel panel=new JPanel();
JScrollPane sp=new JScrollPane(table);
panel.add(sp);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(470,470);
frame.setVisible(true);
}

public static void main(String[] args){
new ReadFileToListM();
}
}

但是有异常!

这是我的异常(exception):

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.String;
at javaapplication1.ReadFileToList.<init>(ReadFileToList.java:37)
at javaapplication1.ReadFileToListM.<init>(ReadFileToListM.java:8)
at javaapplication1.ReadFileToListM.main(ReadFileToListM.java:22)
Java Result: 1

我的txt文件:

 FName Lname Number
second secondsecond 22
thired thithird 33
fourth fourfourr 44
fifth fiffif 55

请帮助我,谢谢。

最佳答案

ReadFileToList 类的构造函数为空,您应该更改:

public void readtolist() throws IOException{

public ReadFileToList() throws IOException{

因为如果不执行模型的初始化(下面的代码),则不会执行将数据放入集合中的方法,而仅执行扩展类中的构造函数。

ReadFileToList rftl=new ReadFileToList();

第二

您无法将一维动态大小数组 List 转换为二维数组。您模型中的其他方法看起来不错。

此外,您还应该以某种方式将数据与文件分开。此时它仅被分割成行。

如果您向我们展示文件中的几行内容,将会非常有帮助。

编辑:06-01-2013 发布文件内容后将模型中的Countructor更改为此

public ReadFileToList() throws IOException{
FileReader fr=new FileReader("D:/AllUserRecords.txt"); //one slash instead of two backslash
BufferedReader br=new BufferedReader(fr);
String line = br.readLine();
while((line=br.readLine()) !=null){
data.add(line.trim()); //trim() delete spaces before and after line
System.out.println(line);
}
br.close();
Arraydata = new String[data.size()][];
for (int i=0;i<data.size();i++){
Arraydata[i]=data.get(i).split(" "); //split text to array by space
}

}

主要应该是这样的

public class ReadFileToListM  {

public ReadFileToListM() throws IOException{
JFrame frame=new JFrame();
ReadFileToList rftl=new ReadFileToList();
JTable table=new JTable(rftl);
JPanel panel=new JPanel();
JScrollPane sp=new JScrollPane(table);
panel.add(sp);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(470,470);
frame.setVisible(true);
}

public static void main(String[] args) throws IOException{
new ReadFileToListM();
}
}

结果: Result

关于java - 以不同的方式将数据显示到 jtable 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com