您好我是Java新手,我正在练习创建一个简单的待办事项列表应用程序。
到目前为止一切正常但我有一个简单的问题。如何以表格形式在我的屏幕上打印值
To Do Date added
Delete nothing 1-1-2012
Delete something 2-2-2013
Delete test 3-2-2012
我已经通过println
获取了我的控制台中的所有记录while(rs.next()) {
System.out.println(rs.getInt("id") + "\n" + rs.getString("item") + "\n" + rs.getDate("datum"));
}
我现在用MVC设计创建了这一切,但正如您所期望的那样,我的VIEW是空的.. 我的问题是,在视图的帮助下,在JFrame上打印出来的最佳方法是什么?
答案 0 :(得分:3)
填充DefaultTableModel,如下所示:
public class TodoModel extends DefaultTableModel {
public TodoModel(ResultSet rs) {
this.dataVector = new Vector<Vector<String>>();
for(rs.first();!rs.isAfterLast(); rs.next()) {
Vector<String> row = new Vector<String>();
row.add("Delete?");
row.add(rs.getString(1));
row.add(rs.getString(2));
this.dataVector.add(row);
}
this.columnIdentifiers = new Vector<String>();
this.columnIdentifiers.add("");
this.columnIdentifiers.add("To Do");
this.columnIdentifiers.add("Date added");
}
}
将此实例传递给您的JTable构造函数,您应该是金色的。让我知道你是怎么过的。
答案 1 :(得分:3)
您不能使用System.out.println();
在框架上打印任何内容。请改用JTable
:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
public class Reshad {
public static void main(String [] args){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
//Create frame
JFrame frame = new JFrame();
//Create table
JTable table = new JTable();
//Create table model (DefaultTableModel in this case)
DefaultTableModel model = new DefaultTableModel(new Object[][]{},new String[]{"To do","Date added"});
//set model
table.setModel(model);
//To populate table call this method from model:
model.addRow(new Object[]{"something","1-1-2012"});
//Create scroll pane
JScrollPane scrollPane = new JScrollPane(table);
//Add scroll pane to center of your frame
frame.add(scrollPane, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
}