如何在JFrame上添加对象

时间:2012-12-26 22:47:55

标签: java swing jdbc jtable tablemodel

您好我是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上打印出来的最佳方法是什么?

2 个答案:

答案 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);
            }
        });
    }

}