Java 填充一个';JTable';使用来自';的值;。txt';文件

Java 填充一个';JTable';使用来自';的值;。txt';文件,java,swing,file-io,jtable,stringtokenizer,Java,Swing,File Io,Jtable,Stringtokenizer,我是java新手,我有一个这样的文本文件 0784879541|P. K.|Tharindu|745874654v|Colombo| 0714786542|H. R.|Kamal|654124784v|Colombo| 0114784544|H. P.|Gamage|6847654127v|Kandy| 我想用这个文本文件中的数据填充我的“jTable”。下面是到目前为止我的代码,它不起作用。当我执行程序时,表上没有显示任何内容 private void formWindowOpened(ja

我是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)以避免初始行为空。您只需添加行,注释[cell contain lot of columns]的问题就在于此
dtm.addRow(新对象[]{columns,data})
use
dtm.addRow(数据),问题将得到解决

代码


将每一行(逐行)分别添加到XxxTableModel中会更加安全。还是有同样的问题。没有显示任何内容。请稍候,有一个problem@TharinduKuruppucheak更新了一个。但您必须在读取文件后构造jtable,因为在读取itI之前,您不知道列标题,而itI只是从
矢量数据更新的;向量列
矢量数据=新矢量();向量列=新向量()那么您的问题解决了吗?数据需要分开并显示在整个表中。但我得到的结果是,它在一个单元格中显示了整行日期。请查看我的更新答案。@FastSnail真棒,这很有效。谢谢你的帮助。多谢各位。
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();
        }

    }