Java 将文本文件读取到jtable

Java 将文本文件读取到jtable,java,swing,file-io,jtable,defaulttablemodel,Java,Swing,File Io,Jtable,Defaulttablemodel,我想制作一个JTable,其中文本文件是使用2d数组逐行读取的,仅用于行循环。如何在DefaultTableModel中的行上循环 这是我的代码: try{ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Database.txt")))); String line = ""; int width = 0, height = 0;

我想制作一个JTable,其中文本文件是使用2d数组逐行读取的,仅用于行循环。如何在
DefaultTableModel
中的行上循环

这是我的代码:

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();
     }
}
以下是全部代码:

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();
     }
}
1) 创建一个DefaultTableModel,不包含任何数据,只包含列名:

DefaultTableModel model = new DefaultTableModel(columnName, 0);
2) 在循环中,当您从文件中读取每行文本时,您将执行以下操作:

String[] data = line.split("-");
model.addRow( data );
3) 阅读完所有文本后,创建表格:

JTable table = new JTable( model );

试着阅读这里的回复:如果你添加更多的细节,将会非常有用。比如,Java的版本、老板的工资和桌子应该工作的环境条件(如温度)。你知道,这是一个系统。每一条信息在组合中都可能有用。不需要简单地询问如何向表中添加行。