我正在尝试使用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
此外,我无法投影我想要的字段,我的意思是我只需要一列(即标题),但我得到结果中的所有列
请帮忙,
由于
答案 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。