现有一个hello.txt文件,要把里面的数据插入到JTable中去。 
hello.txt为: s001 24 male 93 
        excellent A 
s002 25 female 57 
        fail D 
s004 26 male 63 
        pass C 
要求插入到3X6的表格中,也就是说第一行为s001 24 male 93 excellent A以此类推。 
当然数据不止这么少,格式差不多是这样。 难点是,一行记录在txt文本中并不是一行,而是拆分为两行。 
哪个高手有好的解决方案?思路或是源码。 
在线等…………

解决方案 »

  1.   

    下面的代码楼主参考。读文件的并没有实现,但不难。等有空接着写。
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Cursor;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.util.Vector;import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;public class SimpleTable extends JFrame
    {
    /* 表格列向量 */
    Vector cell;
    public SimpleTable(String path)
    {
    //read file method
    readFile(path);
    /* 表格行向量 */
    Vector row = new Vector();

    /* 聲明表格模型 */
    DefaultTableModel tableModel = new DefaultTableModel();

    /* 聲明表格頭數組 */
    String[] tableHeads = { "1", "2", "3", "4", "5", "6"};

    /* 將表格頭轉換為向量類型,以備表格模式使用 */
    Vector tableHeadName = new Vector();

    for(int i = 0; i < tableHeads.length; i++)
    {
    tableHeadName.add(tableHeads[i]);
    }

    /* 設置表格模式 */
    tableModel.setDataVector(row, tableHeadName);

    /* 表格使用模式 */
    JTable table = new JTable(tableModel);

    table.setRowHeight(20);

    /* new Cursor(1)設置鼠標指針式樣,12為手型 */
    table.setCursor(new Cursor(12)); table.setSelectionBackground(Color.black);
    table.setSelectionForeground(Color.white);
    table.setGridColor(Color.black);
    makeFace(table);
    table.setBackground(new Color(206, 120, 50));
    table.setCellSelectionEnabled(false); JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setCursor(new Cursor(12));
    this.getContentPane().add(scrollPane);

    this.setTitle("使用JTable表格");
    this.setSize(400, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    }

    private void readFile(String path)
    { } /* 表格間隔色顯示方法 */
    public static void makeFace(JTable table)
    {
    try
    {
    DefaultTableCellRenderer tcr = new DefaultTableCellRenderer()
    {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
    boolean hasFocus, int row, int column)
    {
    if (row % 2 == 0)
    setBackground(Color.white); /* 設置奇數行底色 */
    else if (row % 2 == 1)
    setBackground(new Color(206, 231, 255)); /* 設置偶數行底色 */
    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
    };
    for(int i = 0; i < table.getColumnCount(); i++)
    {
    table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
    }
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    } } public static void main(String[] args)
    {
    SimpleTable test = new SimpleTable("table.txt");
    }
    }
      

  2.   

    数据来源:table.txt
    内容如下:
    s001 24 male 93
            excellent A
    s002 25 female 57
            fail D
    s004 26 male 63
            pass CreadFile 方法楼主可以继续修正。
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Cursor;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.util.Vector;import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;public class SimpleTable extends JFrame
    {
    /* 表格列向量 */
    Vector cell;
    Vector row = new Vector();
    public SimpleTable(String path)
    {
    //read file method
    readFile(path);
    /* 表格行向量 */


    /* 聲明表格模型 */
    DefaultTableModel tableModel = new DefaultTableModel();

    /* 聲明表格頭數組 */
    String[] tableHeads = { "1", "2", "3", "4", "5", "6"};

    /* 將表格頭轉換為向量類型,以備表格模式使用 */
    Vector tableHeadName = new Vector();

    for(int i = 0; i < tableHeads.length; i++)
    {
    tableHeadName.add(tableHeads[i]);
    }

    /* 設置表格模式 */
    tableModel.setDataVector(row, tableHeadName);

    /* 表格使用模式 */
    JTable table = new JTable(tableModel);

    table.setRowHeight(20);

    /* new Cursor(1)設置鼠標指針式樣,12為手型 */
    table.setCursor(new Cursor(12)); table.setSelectionBackground(Color.black);
    table.setSelectionForeground(Color.white);
    table.setGridColor(Color.black);
    makeFace(table);
    table.setBackground(new Color(206, 120, 50));
    table.setCellSelectionEnabled(false); JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setCursor(new Cursor(12));
    this.getContentPane().add(scrollPane);

    this.setTitle("使用JTable表格");
    this.setSize(400, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    }

    private void readFile(String path)
    {
    BufferedReader reader = null;
    int line = 0;
    String[] line1 = null; 
    String[] line2 = null; 
    try
    {
    reader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
    String str = null;
    while((str = reader.readLine()) != null)
    {
    line++;
    if(line % 2 != 0)
    {
    line1 = str.replaceAll("[ ]+", ",").split(",");
    }
    else
    {

    line2 = str.replaceAll("[ ]+", ",").split(",");
    }

    if(line % 2 == 0)
    {
    cell = new Vector();
    for(int i = 0; i < line1.length; i++)
    cell.add(line1[i]);
    for(int i = 1; i < line2.length; i++)
    cell.add(line2[i]);
    row.add(cell);
    }
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    return;
    }
    } /* 表格間隔色顯示方法 */
    public static void makeFace(JTable table)
    {
    try
    {
    DefaultTableCellRenderer tcr = new DefaultTableCellRenderer()
    {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
    boolean hasFocus, int row, int column)
    {
    if (row % 2 == 0)
    setBackground(Color.white); /* 設置奇數行底色 */
    else if (row % 2 == 1)
    setBackground(new Color(206, 231, 255)); /* 設置偶數行底色 */
    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
    };
    for(int i = 0; i < table.getColumnCount(); i++)
    {
    table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
    }
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    } } public static void main(String[] args)
    {
    SimpleTable test = new SimpleTable("table.txt");
    }
    }