java - 双重拆分一个字符串并将其添加到 JTable

标签 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. 不要为模型设置空值。没有意义。就这样做吧

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

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

    for (String line : lines) {
        model.addRow(line.split("#");
    }
    

这就是它真正的全部:)

运行这个测试

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();
            }
        });
    }
}

关于java - 双重拆分一个字符串并将其添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21585604/

相关文章:

java - 如何将 junit 测试运行结果记录到数据库

java - 设置屏幕中间2帧的位置

java - 使用菜单更改文本字体

c - C 中使用分隔符分割字符串

java - 了解锁定范围

java - Spring Async DeferredResult 在 Tomcat 8 中不起作用

javascript - 如何在保持分隔符的同时根据空格或符号拆分字符串?

java - 需要帮助在 java 中拆分字符串

java - 为什么这个 HashSet 代码片段会这样?

java - javax.swing.plaf.synth.SynthContext.getPainter 处的 NullPointerException