2014-02-05 34 views
2

我有一个Jtable表在我的GUI和一个Java方法,返回一个字符串,如下所示:name1#surname1#job1 $ name2#surname2#job2等。我不知道字符串的确切长度,因为它是根据数据库中有多少人创建的。我想分割这个字符串并将其添加到JTable中,每个值都在正确的类别下!但我无法实现这一点。双分裂一个字符串,并将其添加到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]; 
     } 
+0

不幸的是你不能用** ** $性格分裂。 Pattern类中有一些不允许分割的字符。 –

+0

好吧,这是一个小问题,因为我可以将此角色更改为#(再次)或空间,例如!问题是如何拆分字符串并在右列中添加正确的值 – gimbo

+0

'$'是正则表达式中的一个特殊字符,用于检查行尾是否跟随。如果你想使用这个字符来分割一个字符串,你必须使用字符串“\\ $”来转义它,就像在peeskillet的示例中的showin一样。所有特殊字符都是如此。 (即'。')。关键要记住的是'String.split()'接受一个用作正则表达式的字符串参数,而不是字符串。 – hfontanez

回答

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

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

    String[] lines = longString.split("\\$"); 
    
  3. 只是循环数组,并从第二组添加阵列到model

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

您的解决方案是解决我的问题的解决方案! :) – gimbo

+0

@ user3194811很乐意帮忙! –

相关问题