Double拆分一个字符串并将其添加到JTable

时间:2014-02-05 18:34:08

标签: java swing split jtable

我的gui中有一个Jtable表和一个返回如下字符串的java方法:name1#surname1#job1 $ name2#surname2#job2等。根据我的数据库中有多少人,我不知道字符串的确切长度。我想拆分这个字符串并将其添加到JTable中,每个值都在正确的类别下!但我无法实现这一点。

这是我的JTable的代码:

table = new JTable();
    table.setRowSelectionAllowed(false);
    table.setModel(new DefaultTableModel(new Object[][] {
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null},
    }, new String[] {
            "Name", "Surname", "Job"}) {
        Class[] columnTypes = new Class[] { String.class, String.class,
                String.class};

        public Class getColumnClass(int columnIndex) {
            return columnTypes[columnIndex];
        }

1 个答案:

答案 0 :(得分:4)

  1. 不要为模型设置空值。没有意义。就这样做

    String[] colNames = {"name", "surname","job"};
    DefaultTableModel model = new DefaultTableModel(colNames, 0):
    JTable table = new JTable(model);
    
  2. 然后通过$

    将String拆分为数组
    String[] lines = longString.split("\\$");
    
  3. 只需遍历该数组并再次拆分,然后将第二次拆分中的数组添加到model

    for (String line : lines) {
        model.addRow(line.split("#");
    }
    
  4. 这就是它的全部内容:)

    运行此测试

    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableModel;
    
    public class TestTable5 {
    
        public TestTable5() {
            String blah = "pee#skillet#assassin$pee#skillet#stackoverflow";
            String[] colNames = {"name", "surname", "job"};
            DefaultTableModel model = new DefaultTableModel(colNames, 0);
            JTable table = new JTable(model);
    
            String[] lines = blah.split("\\$");   // escape the $
            for (String line : lines) {
                model.addRow(line.split("#"));
            }
    
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(new JScrollPane(table));
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new TestTable5();
                }
            });
        }
    }