2013-03-22 64 views
1

我正在構建一個Twitter客戶端,我不想檢索並顯示全球趨勢。到目前爲止(感謝Stack Overflow的幫助),我可以檢索趨勢信息,從中提取必要的信息並將趨勢發佈到控制檯。當我嘗試將趨勢添加到表中時,我只能多次顯示第一個趨勢,並且我不確定哪裏出錯,我的排創建等。使用正則表達式和DefaultTableModel向JTable插入值

一雙新鮮的眼睛將不勝感激!

感謝

public static void WorldWideTrends() { 
    Trends WorldWideTrendsList; 

    try { 

     WorldWideTrendsList = getTrends(); 
     UI.whatIsDisplayedList.removeAll(); 
     UI.tweetModel = new DefaultTableModel(10, 1); 
     String trendsInfo = WorldWideTrendsList.toString(); 

     System.out.println(trendsInfo); 

     Pattern p = Pattern.compile("(#.*?)\\'", Pattern.DOTALL); 
     Matcher matcher = p.matcher(trendsInfo); 

     while (matcher.find()) { 

      for (int i = 0; i < 10; i++) { 
       String output = matcher.group(0); 

       System.out.println(output); 
       UI.tweetModel.insertRow(1, new Object[] {}); 
       UI.tweetModel.setValueAt(
         "<html><body style='width: 400px;'><strong>" 
           + output + "</strong><html><br>", i, 0); 
      } 
     } 

    } catch (TwitterException e) { 
     e.printStackTrace(); 
    } 

    UI.whatIsDisplayedList.setModel(UI.tweetModel); 

} 
+0

請學習java命名約定並堅持使用它們。 – kleopatra 2013-03-23 16:43:07

回答

0

我不知道這樣做的目的是:

while (matcher.find()) { 
    for (int i = 0; i < 10; i++) { 
     String output = matcher.group(0); 
     ... 
    } 
} 

,但它會處理每場比賽10次。只需再次撥打.group()不會讓您進入下一場比賽,您需要再次撥打.find()

我想你想簡單地刪除for循環(但是這將匹配10倍以上,如果存在超過10場比賽),也可能刪除,而環和做類似:

// process the first 10 matches 
// no while-loop! 
for (int i = 0; i < 10 && matcher.find(); i++) { 
    String output = matcher.group(0); 
    ... 
}