Note that there are some explanatory texts on larger screens.

plurals
  1. POJTable reading text files from second line
    primarykey
    data
    text
    <p>I'm working on JTable that reads text from a .txt file. the txt file gets updated dynamically after 3 sec. Now when I run the application, everything is good except that the output of .txt files comes in JTable from the second line. The first line of txt file doesn't appear on my JTable. Can anyone help? Here's the code:</p> <pre><code>public class InterfaceFrame extends JFrame implements ActionListener{ public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException { panel.setSize(100,100); panel.add(table); model.fireTableStructureChanged(); table.setModel(model); InsertFileToJtable model = new InsertFileToJtable(); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); table.setFillsViewportHeight(true); RowSorter&lt;TableModel&gt; sorter = new TableRowSorter&lt;TableModel&gt;(model); table.setRowSorter(sorter); JScrollPane scrollpane = new JScrollPane(table); panel.add(scrollpane, BorderLayout.CENTER); JButton button = new JButton("Show View"); panel.add( button, BorderLayout.SOUTH ); tabbedPane.addTab("Process",null,scrollpane,""); } </code></pre> <p>I might be doin something wrong in making the text file. Here's the code which generated the .txt file.:</p> <pre><code>import java.io.*; import java.util.StringTokenizer; public class GetProcessList { private String GetProcessListData() { Process p; Runtime runTime; String process = null; try { System.out.println("Processes Reading is started..."); //Get Runtime environment of System runTime = Runtime.getRuntime(); //Execute command thru Runtime p=runTime.exec("ps -e"); //For Linux //Create Inputstream for Read Processes InputStream inputStream = p.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //Read the processes from sysrtem and add &amp; as delimeter for tokenize the output String line = bufferedReader.readLine(); process = "&amp;"; while (line != null) { line = bufferedReader.readLine(); process += line + "&amp;"; } //Close the Streams bufferedReader.close(); inputStreamReader.close(); inputStream.close(); System.out.println("Processes are read."); } catch (IOException e) { System.out.println("Exception arise during the read Processes"); e.printStackTrace(); } return process; } void showProcessData() { try { //Call the method For Read the process String proc = GetProcessListData(); //Create Streams for write processes //Given the filepath which you need.Its store the file at where your java file. OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("ProcessList.txt")); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); //Tokenize the output for write the processes StringTokenizer st = new StringTokenizer(proc, "&amp;"); while (st.hasMoreTokens()) { bufferedWriter.write(st.nextToken()); //Write the data in file bufferedWriter.newLine(); //Allocate new line for next line } //Close the outputStreams bufferedWriter.close(); outputStreamWriter.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } } </code></pre> <p>Heres the code that reads ProcessList.txt and gives output into JTable:</p> <pre><code>import java.io.*; import java.awt.*; import java.util.*;import javax.swing.*; import java.awt.event.*; import javax.swing.table.*; public class InsertFileToJtable extends AbstractTableModel{ Vector data; Vector columns; private String[] colNames = {"&lt;html&gt;&lt;b&gt;PID&lt;/b&gt;&lt;/html&gt;","&lt;html&gt;&lt;b&gt;TTY&lt;/b&lt;/html&gt;",&lt;html&gt; &lt;b&gt;time&lt;/b&gt;&lt;/html&gt;","&lt;html&gt;&lt;b&gt;Process Name&lt;/b&gt;&lt;/html&gt;",}; public InsertFileToJtable() { String line; data = new Vector(); columns = new Vector(); try { FileInputStream fis = new FileInputStream("ProcessList.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); } @Override public String getColumnName(int column) { return colNames[column]; } @Override public Class getColumnClass(int col){ return getValueAt(0,col).getClass(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload