0

フォルダーから複数のテキスト ファイルを読み取るコードがあり、それらをテーブルに配置する必要があります。これまでのところ、テキスト ファイルのすべての行が別のテーブルに表示されることを除いて、すべて問題ありません。問題がテーブルが各行を個別に受け取ること。オブジェクトを作成して入力し、テーブル内で呼び出しようとしましたが、機能させることができなかったので、誰かが素晴らしい解決策を教えてくれれば. また、値を比較して平均を見つけることができる必要があるので、そのためのヒントがあれば、素晴らしいでしょう

これが私のテキストファイルの例です

17/10/2012 10:00:06.67 [RX] - E usbR<LF>
817EE765FF53-53<LF>
817AA765FF53-34<LF>
817CC765FF53-25<LF>
00<LF>
E qEnd<LF>

そして、これは私がテーブルに入れる必要があるものです

    ID             RSSI
817EE765FF53        53
817AA765FF53        34
817CC765FF53        25

ここにコードがあります

import java.awt.BorderLayout;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Foldersearch1

{

  public static void main(String[] args) 
  {
    // Directory path here
    String path = "C:/Users/Nikica/Desktop/text files"; 

    String files;
    File folder = new File(path);
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) 
    {
      if (listOfFiles[i].isFile()) 
      {
        files = listOfFiles[i].getName();
        if (files.endsWith(".txt") || files.endsWith(".TXT"))
        {

          System.out.println(files);
          (); 

          String currentLine="";

          File textFile = new File(folder.getAbsolutePath() + File.separator + files); 
          try{
            // Open the file that is the first 
            // command line parameter
            FileInputStream fstream = new FileInputStream(textFile);
            try (DataInputStream in = new DataInputStream(fstream)) {
              BufferedReader br = new BufferedReader(new         InputStreamReader(in));
              String strLine;
              String line;
              //Read File Line By Line
              // int p=0;
              // Object[][] Table=null;
              while ((strLine = br.readLine()) != null)   {
                processLine(strLine);
                Table(strLine);

                // Print the content on the console
                //System.out.println (strLine);
              }


            }
          }catch (Exception e){//Catch exception if any
            System.err.println("Error: " + e.getMessage());
          }
        }
      }
    }
  }
  public static void processLine(String line) {
    // skip header & footer


    if (line.startsWith("17/10/2012 10:00:06.67 [RX] - E usbR<LF>") || line.startsWith("E qEnd<LF>")) {return;}


    String ID = line.substring(0, 12);
    String RSSI = line.substring(13, 15);


    System.out.println("ID [" + ID + "]\t RSSI [" + RSSI +"]");

  }
  public static void Table(String line) {
    JFrame frame = new JFrame("proba");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    if (line.startsWith("17/10/2012 10:00:06.67 [RX] - E usbR<LF>") || line.startsWith("E qEnd<LF>")) return;
    String ID = line.substring(0, 12);
    String RSSI = line.substring(13, 15);

    Object rowData[][] = { { ID, RSSI } };
    Object columnNames[] = { "ID", "RSSI" };
    JTable table = new JTable(rowData, columnNames);

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane, BorderLayout.CENTER);
    frame.setSize(300, 150);
    frame.setVisible(true);
  }
}
4

1 に答える 1

3

コードを最小限の変更で機能させるには、rowdata を使用してベクターを作成し、コンストラクター public JTable(Vector rowData, Vector columnNames) を使用します。次のコード スニペットは、その方法についてのアイデアを提供するはずです。

Vector<String> columnNames = new Vector<String>();
columnNames.add("ID");
columnNames.add("RSSI");

Vector<Vector<String>> rowData = new Vector<Vector<String>>();

for(int i=0; i<20; i++) {
    Vector<String> row = new Vector<String>();
    row.add("ID_" + i);
    row.add("RSSI_" + i);
    rowData.add(row);
}

JTable table = new JTable(rowData, columnNames);
于 2012-10-26T10:26:04.527 に答える