2014-02-05 33 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很樂意幫忙! –

相關問題