当前位置: 首页 > 面试题库 >

用'.txt'文件中的值填充'JTable'

佟云
2023-03-14
问题内容

我是Java新手,我有一个像这样的文本文件

0784879541|P. K.|Tharindu|745874654v|Colombo|
0714786542|H. R.|Kamal|654124784v|Colombo|
0114784544|H. P.|Gamage|6847654127v|Kandy|

我想用此文本文件中的数据填充“ jTable”。下面是到目前为止我的代码不起作用。当我执行程序时,表上没有任何显示。

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
    String line = null;
    DefaultTableModel dtm = (DefaultTableModel) PhoneBookTable.getModel();

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        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();
        dtm.addRow(new Object[]{columns, data});//add here 
    } catch (Exception e) {
        e.printStackTrace();
    }

}

有人可以帮帮我吗?


问题答案:

您需要将其更改为以下内容。data = new Vector();每次读取新行时,都需要重置矢量,否则它包含第一行+第二行+以此类推。您还可以调用dtm.setRowCount(0);以避免初始行为空。并且您只需要添加行,您的注释[单元格包含很多列]的问题是由于
dtm.addRow(new Object[]{columns, data})使用dtm.addRow(data);而引起的,问题将得到解决

private void formWindowOpened(java.awt.event.WindowEvent evt) {
        String line = null;
        DefaultTableModel dtm = (DefaultTableModel) PhoneBookTable.getModel();

        try {
            BufferedReader br = new BufferedReader(new FileReader(file));

            while ((line = br.readLine()) != null) {
                data = new Vector();// this is important
                StringTokenizer st1 = new StringTokenizer(line, "|");
                while (st1.hasMoreTokens()) {
                    String nextToken = st1.nextToken();
                    data.add(nextToken);
                    System.out.println(nextToken);

                }
                System.out.println(data);
                dtm.addRow(data);//add here 
                System.out.println(".................................");
            }

            br.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }


 类似资料:
  • 我试图用CSV文件中的值填充H2数据库,如下所示: 这也是我的实体类: 这是我的CSV文件: 当我调用endpointlocalhost:8082/loadController时,我的数据库没有被填充,而是保持为空,我得到的只是控制台中的以下错误: 最后,我的问题是我应该做什么,我应该怎样做才能把事情做好?

  • 此应用程序将在Person类的帮助下写入和读取csv文件。它不会用数据填充表。我试图在将csv文件加载到list=new ArrayList()的同时执行表的加载,方法是将相同的数据加载到plist=new ArrayList(),然后将此plist传输到data=FXCollections。可观察列表(plist) 请解释此代码失败的地方。是否无法在加载列表ArrayList的同时加载obser

  • 本文向大家介绍在MySQL中用零填充列的值,包括了在MySQL中用零填充列的值的使用技巧和注意事项,需要的朋友参考一下 为此,请使用零填充的概念。它使用零填充字段的显示值,直到字段定义中设置的显示宽度 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出-

  • 问题内容: 我想使用该类填充一个。 我想将条目加载到文件中,然后将其复制到中。 之前,我曾经使用属性文件初始化,但是现在我已经定义了,并且只想在构造函数中对其进行初始化。 较早的方法: 但是现在,我有这个 如何将属性对象分配给此处? 问题答案: 如果我理解正确,则属性中的每个值都是代表整数的字符串。因此,代码如下所示:

  • 对于我的web应用程序,我将从静态DB表中加载一些细节,我计划在容器在单个bean中的HolderClass上启动时加载这些静态DB表。我将在任何希望使用静态数据的地方注入这个类。所以基本上我想避免每次从DB加载静态数据 当前执行情况: 上面的实现工作得非常好,即init方法为bean加载国家列表。但是现在我已经迁移到了Hibernate,Country是一个持久实体。 Hibernate: 请注

  • 我有一个熊猫数据框,它有超过4列。col1中的某些值缺失,我希望根据以下方法设置这些缺失的值: 尝试根据具有相同col2, col3, col4值的记录的col1值的平均值来设置它 如果没有这样的记录,则根据具有相同col2, col3值的记录的col1值的平均值来设置它 如果仍然没有这样的记录,则根据具有相同col2值的记录的col1值的平均值来设置它 如果以上都找不到,将其设置为col1中所有