使用Regex和DefaultTableModel将值插入JTable

时间:2013-03-22 01:01:24

标签: java regex jtable twitter4j defaulttablemodel

我正在建立一个Twitter客户端,我不想检索和显示全球趋势。到目前为止(感谢Stack Overflow的帮助)我可以检索趋势信息,从中提取必要的信息并将趋势发布到控制台。当我尝试将趋势添加到表格中时,我只能多次显示第一个趋势,而且我不确定我的行创建等在哪里出错。

一双新鲜的眼睛会受到赞赏!

由于

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

}

1 个答案:

答案 0 :(得分:0)

我不确定这是什么目的:

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

但它会处理每场比赛10次。只需再次拨打.group()即可转到下一场比赛,您需要再次致电.find()

我认为你想简单地删除for循环(但如果存在超过10个匹配,这将匹配10次以上),或者可能删除while循环并执行以下操作:

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