1

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

4

2 回答 2

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

}
于 2012-12-26T23:03:37.017 回答
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");
    }
}

将 this 的一个实例传递给您的JTable构造函数,您应该会很成功。让我知道你是怎么办的。

于 2012-12-26T22:58:41.007 回答