Solved

Arraylist, jTable

Posted on 2010-09-14
18
1,130 Views
Last Modified: 2012-05-10
Hello,
I have an arraylist and i'm trying to put the contents in a Jtable under column names First Name, Last Name, School ID, Number.

The code below extracts the values of First Name, Last Name, School ID, and Number from a file. I am trying to put these info in a Jtable but i don't know if and how to use the default table model or abstract table model.
Please Help.


import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;




public class ReadFile {
	private static String output = "";
	//static List list = new ArrayList(); 
	 static ArrayList<String> list = new ArrayList<String>();
	
    public static void main(String[] args) {
  
        //
        // Create an instance of File for data.txt file.
        //
        File file = new File("data.txt");
        
         
      
        try {
            
            Scanner scanner = new Scanner(file);
           
            //output = "";
            while (scanner.hasNextLine()) {
                String str = scanner.nextLine();
                //System.out.println(line);
                if (parseString(str) != null) {
                // output += parseString(str);
                 list.add(parseString(str));
                       
                } 
               
            }
            
            System.out.println(list);
            System.out.println();
            
            for(int i=0;i<list.size();i++)
            {
            System.out.println(list.get(i));
            }

           

            //System.out.println(list);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        
    }
    
    private static String parseString(String line) {
    
        if (line.contains("First Name") || line.contains("Last Name") || line.contains("School ID")|| line.contains("Number")) {
                    line = line.substring(line.indexOf("=") + 1, line.length());
            //return line + "\n";
            return line;
           
        	
        } else {
            return null;
        }
    } 
    
 }

Open in new window

0
Comment
Question by:Smock
  • 8
  • 7
  • 2
18 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 33675507
Please post example file. CSV is a good way
0
 

Author Comment

by:Smock
ID: 33675585
I have a txt file with the following:

ID = 0
First Name=Joe
Last Name=Doe
Age=21
Gender=Male
School = middle school
StudentID = 1234
Address = some address.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33675621
That's not a good format. After one entry, the 'column names' become redundant and wasteful. I would use CSV. You can then use

http://technojeeves.com/joomla/index.php/free/104-csv-to-tablemodel
0
 

Author Comment

by:Smock
ID: 33675625
Thanks but it's in a text file and not a csv.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33675672
Then split on '=' and create a DefaultTableModel. After the first data 'row' you'll have to ignore the column names
0
 

Author Comment

by:Smock
ID: 33675735
My code splits on '=' and stores the values in an arraylist. I don't know how to put it in the Jtable.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33675834
Is it always just one row of data?
0
 

Author Comment

by:Smock
ID: 33676001
I'm writing a bigger program and will incoporate multiple rows.

My goal is to eventually loop through a bunch of files named data.txt and extract the necessary data and then store it in the jtable.
so, it's not always one row of data.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 50 total points
ID: 33676074
Use Vector instead of ArrayList. Every row must be one Vector instance, which must be added to an 'allRows' Vector. Then you can use a DefaultTableModel

http://download.oracle.com/javase/6/docs/api/javax/swing/table/DefaultTableModel.html#DefaultTableModel(java.util.Vector,%20java.util.Vector)
0
 

Author Comment

by:Smock
ID: 33676156
So do i store the output that is split from the "=" into a Vector?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33676268
Yes, you add each column of a single row to one and the same Vector
0
 

Author Comment

by:Smock
ID: 33676940
May i be given an example
0
 
LVL 92

Assisted Solution

by:objects
objects earned 200 total points
ID: 33677549
Use the Properties class to parse the file


Properties props = new Properties();
FileInputStream in = new FileInputStream("data.txt");
props.load(in);
in.close();

String id = props.getString("ID");
...

Then add the data to your table model

0
 
LVL 92

Accepted Solution

by:
objects earned 200 total points
ID: 33677566
tableModel.addRow(new Object[] { props.getString("ID"), props.getString("First Name"), props.getString("Last Name") });
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33680055
Using Properties will only work for a single row btw.

Your problem here is that your input format is not a good one (see http:#33675621 ), so you've made things difficult for yourself
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33949524
Plenty of help given
0
 

Author Closing Comment

by:Smock
ID: 33978331
thanks
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now