2017-06-05 5 views
1

テキストファイルの内容をjTableに表示するにはどうすればよいですか?テキストファイルからjtableにデータを取得するにはどうすればよいですか?

String fileName = "/Users/JJ/Desktop/SSD Text.txt"; 

// This will reference one line at a time 
String line = null; 

try { 
    // FileReader reads text files in the default encoding. 
    FileReader fileReader = new FileReader(fileName); 

    // Wraps FileReader in BufferedReader. 
    BufferedReader bufferedReader = 
     new BufferedReader(fileReader); 
    int i = 0; 
    int x= 0; 
    Object[][] myarray = new String [4][100]; 
    while((line = bufferedReader.readLine()) != null) { 
     x=0; 
     for (String retval: line.split (",")) { 
     myarray[x][i]=retval; 
     } 
+0

'オブジェクト[] [] myarray'なぜオブジェクトですか?また、4行以上ある場合はどうなりますか? –

+0

あなたはファイルの読み方を知っているようですが、JTableを構築する方法に関するオンラインの例はたくさんあります。ここに1つあります:http://www.java2s.com/Tutorial/Java/0240__Swing/CreatingaJTable.htm –

答えて

1

次のコードは、ファイルからデータを読み取り、それをJTableの1列目に配置します。私はこれがあなたを助けることを望む。

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.AbstractTableModel; 

public class Main { 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 

      public void run() { 
       new Main().createUI(); 
      } 
     }; 

     EventQueue.invokeLater(r); 
    } 

    private void createUI() { 

     try { 
      JFrame frame = new JFrame(); 
      frame.setLayout(new BorderLayout()); 
      JTable table = new JTable(); 

      String readLine = null; 

      StudentTableModel tableModel = new StudentTableModel(); 
      File file = new File("/home/developer/ffmpeg.txt"/*Give your File Path here*/); 

      FileReader reader = new FileReader(file); 
      BufferedReader bufReader = new BufferedReader(reader); 

      List<Line> studentList = new ArrayList<Line>(); 
      while((readLine = bufReader.readLine()) != null) { 
       String[] splitData = readLine.split(";"); 

       Line line = new Line(); 
       line.setName(splitData[0]); 
       studentList.add(line); 
      } 

      tableModel.setList(studentList); 
      table.setModel(tableModel); 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.add(new JScrollPane(table)); 
      frame.setTitle("File to JTable"); 
      frame.pack(); 
      frame.setVisible(true); 

     } catch(IOException ex) {} 
    } 

    class Line { 

     private String name; 
     private String number; 

     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
    } 

    class StudentTableModel extends AbstractTableModel { 

     private List<Line> list = new ArrayList<Line>(); 
     private String[] columnNames = {"column1", "column2"}; 

     public void setList(List<Line> list) { 
      this.list = list; 
      fireTableDataChanged(); 
     } 

     @Override 
     public String getColumnName(int column) { 
      return columnNames[column]; 
     } 

     public int getRowCount() { 
      return list.size(); 
     } 

     public int getColumnCount() { 
      return columnNames.length; 
     } 

     public Object getValueAt(int rowIndex, int columnIndex) { 
      switch (columnIndex) { 
       case 0: 
        return list.get(rowIndex).getName(); 
       default: 
        return null; 
      } 
     } 
    } 
} 
関連する問題