如何使用mongo驱动程序在java中填充jtable

时间:2013-12-10 07:18:15

标签: java swing mongodb

我正在尝试使用java中使用mongo驱动程序获取的数据填充jtable,这是我的代码:

Pattern pattern = Pattern.compile(".*"+textArea.getText()+".*", Pattern.CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("content:encoded", pattern);

DBCursor cursor = blogTable.find(query);

while (cursor.hasNext())
{
    chatArea.append("\n"+cursor.next().toString()); //I want to populate the jtable here instead of just appending in the JtextArea
}//End of while

此外,我无法投影我想要的字段,我的意思是我只需要一列(即标题),但我得到结果中的所有列

请帮忙,

由于

2 个答案:

答案 0 :(得分:2)

阅读JTabel的{​​{3}}。

以下是您的简单示例:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Example extends JFrame {

    private DefaultTableModel model;

    public Example() {
        JTable table = new JTable(model = new DefaultTableModel(new Object[][]{},new Object[]{"data"}));
        add(new JScrollPane(table));
        JButton populate = new JButton("populate");
        populate.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                //Pattern pattern = Pattern.compile(".*"+textArea.getText()+".*", Pattern.CASE_INSENSITIVE);
                //BasicDBObject query = new BasicDBObject("content:encoded", pattern);
                //DBCursor cursor = blogTable.find(query);
                //while (cursor.hasNext()) {
                //  model.addRow(new Object[]{cursor.next().toString()});
                //}

            }
        });
        add(populate,BorderLayout.NORTH);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                Example frame = new Example();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

populate按钮从您的BD获取数据,并在while循环中向表模型添加新行。

答案 1 :(得分:2)

要获取字段的投影,您应该传递DBObject进行投影,

DBCursor cursor = collection.find(query, projectionQuery);

投影是键值对形式的DBObject。 其中,

键是您要投影的字段的名称。 值可以是0或1 0 - 表示从结果集中排除特定列 1 - 表示在结果集中包含特定列。

有关详细信息,请参阅here