Search code examples
javaswingjtablebufferedreaderfilewriter

How to get text from a TextFile and putting it to a Table


I am trying to put text from a text file to a table I want it to display on the table when pressing a button. It does not display any errors it just does not work. Can someone please explain why and how to make it work. The text is divided with ;

       private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) 
        {                                         
        try {
        BufferedReader br = new BufferedReader(new 
         FileReader("zam.txt"));
        String r;
        int v =0;

        do{
            r = br.readLine();
            if(r!=null){
                 v++;
            }
        }while(r!=null);

        Object[] row = new String[v];

        do{
            r = br.readLine();
            if(r!=null){
                for (int i = 0; i < v; i++) {

                    int ix = r.indexOf(";");
                    row[i] = r.substring(0, ix);
                    r = r.substring(ix+1);

                    int zn = r.indexOf(";");
                    row[i] += r.substring(0, zn);
                    r = r.substring(zn+1);

                    int xn = r.indexOf(";");
                    row[i] += r.substring(0, xn);
                    r = r.substring(xn+1);

                    int an = r.indexOf(";");
                    row[i] += r.substring(0, an);

                    table.addRow(row);
                }
            }
        }while(r!=null);

        br.close();
    } catch (IOException e) {
    }
} 

Solution

  • You should shorten this.

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) 
    {                                         
        try {
        BufferedReader br = new BufferedReader(new 
         FileReader("zam.txt"));
    
        String r;
        do{
            r = br.readLine();
            if(r!=null){
                String [] sline=r.split(";");
                table.addRow(sline);                
            }
        }while(r!=null);
    
        br.close();
        } catch (IOException e) {
        }
    } 
    

    Reason: you read the file 2 times but without resetting the stream. Why?

    Then you counted the number of lines and took this number as number of columns, why?