2013-03-01 155 views
-1

我想製作一個JTable,其中文本文件是逐行使用2d數組讀取的,僅用於行循環。我如何循環在DefaultTableModel的行。將文本文件讀取到jtable

這裏是我的代碼:

try{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Database.txt")))); 
    String line = ""; 
    int width = 0, height = 0; 

    while((line = br.readLine())!=null){ 

    if(width == 0){ 

    String data[] = line.split("-"); 
    width = data.length; 

     } 
    height++; 

    String matrix[][] = new String[height][width]; 
    model = new DefaultTableModel(matrix, col); 
    table = new JTable(model){ 
    public boolean isCellEditable(int row, int column){ 
    return false; 
    }}; 
    } 
}catch (IOException ex){ 
     ex.printStackTrace(); 
} 

這裏是整個代碼:

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
import javax.swing.table.*; 
import java.io.*; 
import java.util.*; 

public class Administrator extends JFrame { 

     private String col []= {"Account No.","PinCode","First Name", 
     "Last Name", "MI","BirthDate","Sex","E-mail","Address"}; 
     private JScrollPane scroll; 
     private JTable table; 
     private DefaultTableModel model; 

    public Administrator(){ 
     //ImageIcon bcr = new ImageIcon(getClass().getResource("/images/bcr.jpg")); 
     final JButton back = new JButton("back"); 
     back.setLocation(20,480); 
     back.setSize(70,30); 
     back.setPreferredSize(new Dimension(90,30)); 
     back.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      dispose(); 
      } 
     } 
     ); 
     try{ 

      BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Database.txt")))); 

      String line = ""; 

      int width = 0, height = 0; 

      while((line = br.readLine())!=null){ 

      if(width == 0){ 

      String data[] = line.split("-"); 
      width = data.length; 

      } 
      height++; 

      String matrix[][] = new String[height][width]; 
      model = new DefaultTableModel(matrix, col); 
      table = new JTable(model){ 
      public boolean isCellEditable(int row, int column){ 
      return false; 
       } 
      }; 
     } 
     } 
     catch (IOException ex){ 
     ex.printStackTrace(); 
     } 

     DefaultTableCellRenderer cent = new DefaultTableCellRenderer(); 
     cent.setHorizontalAlignment(JLabel.CENTER); 
     table.getColumnModel().getColumn(0).setCellRenderer(cent); 
     table.getColumnModel().getColumn(1).setCellRenderer(cent); 
     table.getColumnModel().getColumn(2).setCellRenderer(cent); 
     table.getColumnModel().getColumn(3).setCellRenderer(cent); 
     table.getColumnModel().getColumn(4).setCellRenderer(cent); 
     table.getColumnModel().getColumn(5).setCellRenderer(cent); 
     table.getColumnModel().getColumn(6).setCellRenderer(cent); 
     table.getColumnModel().getColumn(7).setCellRenderer(cent); 
     table.getColumnModel().getColumn(0).setPreferredWidth(100); 
     table.getColumnModel().getColumn(1).setPreferredWidth(100); 
     table.getColumnModel().getColumn(2).setPreferredWidth(100); 
     table.getColumnModel().getColumn(3).setPreferredWidth(100); 
     table.getColumnModel().getColumn(4).setPreferredWidth(50); 
     table.getColumnModel().getColumn(5).setPreferredWidth(100); 
     table.getColumnModel().getColumn(6).setPreferredWidth(50); 
     table.getColumnModel().getColumn(7).setPreferredWidth(120); 

     scroll = new JScrollPane(table); 
     scroll.setLocation(20, 320); 
     scroll.setSize(750,150); 

     Container pane = getContentPane(); 
     pane.setLayout(null); 
     pane.add(back); 
     pane.add(scroll); 

     /*setIconImage(new ImageIcon("/images/icon.jpg").getImage()); 
     setLayout(new BorderLayout()); 
     JLabel www = new JLabel(new ImageIcon(getClass().getResource("/images/admin.jpg"))); 
     add(www);*/ 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setTitle("Account Profile"); 
     setSize(800,550); 
     setResizable(false); 
     setVisible(true); 
     setLocation(110, 30); 
    } 
    public static void main(String[]args){ 
     new Administrator(); 
    } 
} 
+2

要讀出迴應這裏:http://stackoverflow.com/a/11001018/1427124 – DaoWen 2013-03-01 16:42:33

+0

這將是非常有用的,如果你添加更多的細節。就像Java的版本,你的老闆的薪水和你的桌子應該工作的環境條件(即溫度)。你知道,這是一個系統。每條信息都可能有用。不需要簡單地詢問如何將一行添加到表中。 – Val 2013-03-01 16:58:19

回答

1

1)創建一個沒有數據,只有列名的的DefaultTableModel:

DefaultTableModel model = new DefaultTableModel(columnName, 0); 

2)在你身邊R迴路,當你從文件中讀取文本的每一行,你會做這樣的事情:

String[] data = line.split("-"); 
model.addRow(data); 

3)當你閱讀完所有的文本,然後在創建表:

JTable table = new JTable(model);