2016-11-04 77 views
0

我正在尋找將CSV文件中的數據存入表格的方式。 我有刷新率的問題。表格只打印一行。 如何更改此代碼以在表中打印更多行? 因爲在CSV文件中我有例如20行或更多行。CSV到Java中的表格

import java.awt.Component; 
import java.awt.Font; 
import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.PrintStream; 
import java.io.Reader; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class FileParser { 
    String aFileToRead = ""; 

    public FileParser(String aNameOfFile) { 
     this.aFileToRead = aNameOfFile; 
    } 

    public void readFileToObjects() { 
     int comma1=0; 
     int comma2=0; 
     int comma3=0; 
     int comma4=0; 
     int comma5=0; 
     int comma6=0; 
     int comma7=0; 
     int comma8=0; 
     int comma9=0; 
     int comma10=0; 
     int comma11=0; 
     int comma12=0; 
     int comma13=0; 
     int comma14=0; 
     int comma15=0; 
     int endOfLine=0; 
     double aTemperature = 0.0; 
     double aHumidity = 0.0; 
     double aPressure = 0.0; 
     double aOrientation_x = 0.0; 
     double aOrientation_y = 0.0; 
     double aOrientation_z = 0.0; 
     double aMagnetic_x = 0.0; 
     double aMagnetic_y = 0.0; 
     double aMagnetic_z = 0.0; 
     double aSpeed_x = 0.0; 
     double aSpeed_y = 0.0; 
     double aSpeed_z = 0.0; 
     String aGyroscope_x = ""; 
     String aGyroscope_y = ""; 
     String aGyroscope_z = ""; 
     String aTime = ""; 
     String chartPositionAsString=""; 
     JFrame frame = new JFrame(); 


     try { 
      String aStr = null; 
      FileInputStream aFile = new FileInputStream(this.aFileToRead); 
      InputStreamReader aInReader = new InputStreamReader(aFile); 
      BufferedReader theBufReader = new BufferedReader(aInReader); 
      while ((aStr = theBufReader.readLine()) != null) { 
       comma1 = aStr.indexOf(","); 
       chartPositionAsString = aStr.substring(0, comma1); 
       aTemperature = Double.parseDouble(chartPositionAsString); 

       comma2 = aStr.indexOf(",", comma1 + 1); 
       chartPositionAsString = aStr.substring(comma1 + 1, comma2); 
       aHumidity = Double.parseDouble(chartPositionAsString); 

       comma3 = aStr.indexOf(",", comma2 + 1); 
       chartPositionAsString = aStr.substring(comma2 + 1, comma3); 
       aPressure = Double.parseDouble(chartPositionAsString); 

       comma4 = aStr.indexOf(",", comma3 + 1); 
       chartPositionAsString = aStr.substring(comma3 + 1, comma4); 
       aOrientation_x = Double.parseDouble(chartPositionAsString); 

       comma5 = aStr.indexOf(",", comma4 + 1); 
       chartPositionAsString = aStr.substring(comma4 + 1, comma5); 
       aOrientation_y = Double.parseDouble(chartPositionAsString); 

       comma6 = aStr.indexOf(",", comma5 + 1); 
       chartPositionAsString = aStr.substring(comma5 + 1, comma6); 
       aOrientation_z = Double.parseDouble(chartPositionAsString); 

       comma7 = aStr.indexOf(",", comma6 + 1); 
       chartPositionAsString = aStr.substring(comma6 + 1, comma7); 
       aMagnetic_x = Double.parseDouble(chartPositionAsString); 

       comma8 = aStr.indexOf(",", comma7 + 1); 
       chartPositionAsString = aStr.substring(comma7 + 1, comma8); 
       aMagnetic_y = Double.parseDouble(chartPositionAsString); 

       comma9 = aStr.indexOf(",", comma8 + 1); 
       chartPositionAsString = aStr.substring(comma8 + 1, comma9); 
       aMagnetic_z = Double.parseDouble(chartPositionAsString); 

       comma10 = aStr.indexOf(",", comma9 + 1); 
       chartPositionAsString = aStr.substring(comma9 + 1, comma10); 
       aSpeed_x = Double.parseDouble(chartPositionAsString); 

       comma11 = aStr.indexOf(",", comma10 + 1); 
       chartPositionAsString = aStr.substring(comma10 + 1, comma11); 
       aSpeed_y = Double.parseDouble(chartPositionAsString); 

       comma12 = aStr.indexOf(",", comma11 + 1); 
       chartPositionAsString = aStr.substring(comma11 + 1, comma12); 
       aSpeed_z = Double.parseDouble(chartPositionAsString); 

       comma13 = aStr.indexOf(",", comma12 + 1); 
       chartPositionAsString = aStr.substring(comma12 + 1, comma13); 
       aGyroscope_x = (chartPositionAsString); 

       comma14 = aStr.indexOf(",", comma13 + 1); 
       chartPositionAsString = aStr.substring(comma13 + 1, comma14); 
       aGyroscope_y = (chartPositionAsString); 

       comma15 = aStr.indexOf(",", comma14 + 1); 
       chartPositionAsString = aStr.substring(comma14 + 1, comma15); 
       aGyroscope_z = (chartPositionAsString); 

       endOfLine = aStr.length(); 
       aTime = chartPositionAsString = aStr.substring(comma15 + 1, endOfLine); 

       Env aEnv = new Env(aTemperature, aHumidity, aPressure, 
            aOrientation_x, aOrientation_y, aOrientation_z, 
            aMagnetic_x, aMagnetic_y, aMagnetic_z, aSpeed_x, aSpeed_y, aSpeed_z, 
            aGyroscope_x, aGyroscope_y, aGyroscope_z, 
            aTime); 

       String columnNames1[] = { "Temperature", "Humidity", "Pressure", 
        "Orientation yaw", "Orientation pitch", "Orientation roll", 
         "Magnetic X", "Magnetic Y", "Magnetic Z", 
         "Speed X", "Speed Y", "Speed Z", 
         "Gyroscope X", "Gyroscope Y", "Gyroscope Z", 
         "Time" };  

       Object[][] rowData1 = { 
          {aEnv.getTemperature(), aEnv.getHumidity(), aEnv.getPressure(), 
          aEnv.getOrientation_x(), aEnv.getOrientation_y(), aEnv.getOrientation_z(), 
          aEnv.getMagnetic_x(), aEnv.getMagnetic_y(), aEnv.getMagnetic_z(), 
          aEnv.getSpeed_x(), aEnv.getSpeed_y(), aEnv.getSpeed_z(), 
          aEnv.getGyroscope_x(), aEnv.getGyroscope_y(), aEnv.getGyroscope_z(), 
          aEnv.getTime(),}}; 

       JTable table = new JTable(rowData1, columnNames1); 
       JScrollPane scrollPane = new JScrollPane(table); 
       table.getTableHeader().setFont(new Font("Serif", Font.BOLD, 15)); 

       frame.add((Component) scrollPane, "Center"); 

       frame.setTitle("Enviromental Data"); 
       frame.setDefaultCloseOperation(3); 
       frame.setSize(1900, 100); 
       frame.setVisible(true); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      System.out.println("The File is Not in The Correct Directory"); 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
     } 
    } 
} 
+3

而不是重新發明輪子嘗試使用類似csvreader的東西 –

+3

您的代碼看起來非常重複。也許你想要一個數組和一個循環? – 4castle

+0

順便說一句,您在while循環中創建了您的JTable - 這意味着它將被重新創建爲每行 –

回答

0

您正在使用很多變量。

List<String[]> rows = new ArrayList<>(); 
while ((aStr = theBufReader.readLine()) != null) { 
    String[] dataLine = aStr.split(","); 
    rows.add(dataLine); 
} 

然後,創建JTable中,你可能會需要重新從列表中Object[][]。或看到這Populate JTable Using List

如果您確實需要將某些行轉換爲數字(格式),您可以使用一個循環來轉換這些列,使用一個包含列索引和循環的數組。