当前位置: 首页 > 知识库问答 >
问题:

将数据从文本文件显示到JTable

葛驰
2023-03-14

我的文本文件包含的数据为:sample。txt
内存头1 1 NA设置字符串SRC代码

MEMHEAD 1 2 NA设置字符串memIdnum

LGLNAME 1 5 NA先设置字符串

我已经创建了MyClassModel类,将AbstractTableModel扩展为:

    public class MyClassModel extends AbstractTableModel 
{

    Vector data;
    Vector columns;
    public MyTableModel() {
            String line;

            try {
                    FileInputStream fis = new FileInputStream("sample.txt");
                    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                    StringTokenizer st1 = new StringTokenizer(br.readLine(), ",");
                    while (st1.hasMoreTokens())
                           columns.addElement(st1.nextToken());
                    while ((line = br.readLine()) != null) {
                            StringTokenizer st2 = new StringTokenizer(line, ",");
                            while (st2.hasMoreTokens())
                                    data.addElement(st2.nextToken());
                    }
                    br.close();
            } catch (Exception e) {
                    e.printStackTrace();
            }
    }

    public int getRowCount() {
            return data.size() / getColumnCount();
    }

    public int getColumnCount() {
            return columns.size();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
            return (String) data.elementAt((rowIndex * getColumnCount())
                            + columnIndex);
    }
}
}

通过这种方式,我从文件中检索数据。现在当我制作一个JTable并使用设置模型table.setModel(MyTableModel)。我得到一个NullPointerExc0019

继续:

文本文件数据显示在JTable中,但是JTable还包含一些额外的行和一些垃圾数据,当我按下这些行时java。lang.ArrayIndexOutofBounds异常:180

public Object getValueAt(int rowIndex, int columnIndex) {
        return (String) data.elementAt((rowIndex * getColumnCount()) + columnIndex);
}

但是我不知道问题出在哪里。请帮忙。


共有2个答案

刁越
2023-03-14

文本文件中的数据也可以使用DefaultTableModel添加到JTable中。这是一种简单而有效的方法。

         FileInputStream fis = new FileInputStream("sample.config");
        BufferedReader br1 = new BufferedReader(new InputStreamReader(fis));
        DefaultTableModel dtm= new DefaultTableModel(0,6);  
    // (for each line in file)
    while ((line = br1.readLine()) != null) 
          {
    dtm.addRow(line.split(" ")); 
     }
    br.close();
    dtm.setColumnIdentifiers(new Object[] { "Attribute"," #","Position",         "Transformation","Assignment","Field","Constant" });
陆烨磊
2023-03-14

您将数据添加到两个矢量,而不初始化它们。

Vector data;
Vector columns;

在添加元素之前初始化它们。

Vector data = new Vector();
Vector columns = new Vector();

执行此操作后,检查是否获得NullPointerException。

如果您仍然得到NPE,那么我怀疑您没有初始化JTable。所以发布代码,让我们知道异常的确切位置。

 类似资料:
  • 我正试图找出如何从如下格式的文本文件中读取数据: 1.0,8.0 4.0,3.0 6.0,0.0 3.0,5.0 在myNumbers1中添加每行的第一个元素,在myNumbers2中添加第二个元素,如下所示: double[]myNumbers1={} double[]myNumbers2={}; 要得到 double[]myNumbers1={1.0,4.0,6.0,3.0}<双[]myNum

  • 问题内容: 如何从.txt文件读取和显示数据? 问题答案: 然后,您可以使用in.readLine(); 一次读取一行。要读到最后,可以这样编写while循环:

  • 问题内容: 我有一个包含一些元数据的文件,然后是包含2个带有标题的列的实际数据。在numpy中使用genfromtxt之前,是否需要将两种类型的数据分开?还是可以以某种方式拆分数据?将文件指针放在标题上方行的末尾,然后从那里尝试genfromtxt怎么办?谢谢该文件的格式如下所示: 问题答案: 如果您不希望第一行,请尝试(如果没有丢失的数据): 或(如果缺少数据): 如果然后要解析标头信息,则可以

  • 我对JavaFX和JavaFX Scene Builder是新手,几个星期以来一直在研究并试图弄清楚如何简单地从文本文件中读取并在文本中显示其内容。我的controller类中有一个很好的文件读取功能,但我不知道如何将文本文件显示到fxml文档中的文本区域。我已经学会了如何单击按钮并使文件显示在文本区域中,但我希望GUI加载后立即在文本区域中显示内容。如果任何人有一个想法如何去做这件事,你的帮助将

  • 我首先将数据从文本字段导出到文本文件。为此,我使用了序列化。这是密码 要从文件中加载数据,我正在使用反序列化。下面是我使用的代码 我没有错误,文件加载程序正在显示。但当我选择文件时,程序不会将数据放入文本字段。我使用以下代码创建了一个加载按钮: 你认为我在代码中遗漏了什么吗?

  • 我使用JetBrains PhpStorm作为我的IDE,我绝对喜欢它,但遗憾的是,由于一个问题,我需要改用Adobe Dreamweaver。 我有一个相当烦人的问题,任何< code>index.php文件都显示为文本文件,即使它的扩展名是< code >。php。注意,这只适用于名为< code>index.php的文件。我想这是一个需要更改的设置,但在文档中找不到任何解决方案。 以前有人遇