Java 如何在JFrame上添加对象

Java 如何在JFrame上添加对象,java,swing,jdbc,jtable,tablemodel,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(r

您好,我是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设计创建了这一切,但正如你所料,我的视图是空的。。 我的问题是,在视图的帮助下,在JFrame上打印此内容的最佳方式是什么?

填充a,如下所示:

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");
    }
}
public类TodoModel扩展了DefaultTableModel{
公共到模型(结果集rs){
this.dataVector=新向量();
对于(rs.first();!rs.isAfterLast();rs.next()){
向量行=新向量();
行。添加(“删除?”);
添加(rs.getString(1));
添加(rs.getString(2));
this.dataVector.add(行);
}
this.columnIdentifiers=新向量();
此.columnIdentifiers.add(“”);
本条。添加(“待办事项”);
本条添加(“添加日期”);
}
}
将此实例传递给您的构造函数,您应该是golden。让我知道你进展如何。

填充a,如下所示:

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");
    }
}
public类TodoModel扩展了DefaultTableModel{
公共到模型(结果集rs){
this.dataVector=新向量();
对于(rs.first();!rs.isAfterLast();rs.next()){
向量行=新向量();
行。添加(“删除?”);
添加(rs.getString(1));
添加(rs.getString(2));
this.dataVector.add(行);
}
this.columnIdentifiers=新向量();
此.columnIdentifiers.add(“”);
本条。添加(“待办事项”);
本条添加(“添加日期”);
}
}

将此实例传递给您的构造函数,您应该是golden。告诉我你的进展情况。

你不能使用
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);
            }
        });
    }

}

不能使用
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);
            }
        });
    }

}

读这本书。首先是基础知识,然后可能是关于JTable的部分。并做好准备:这不是“一件简单的事情”。你需要学习很多东西,这需要时间。阅读。首先是基础知识,然后可能是关于JTable的部分。并做好准备:这不是“一件简单的事情”。您必须学习很多东西,这需要时间。@Reshad:您将无法使用Swing by copy'n粘贴在Internet上找到的代码,并且无法理解Swing的工作原理。阅读本教程,了解组件是什么、如何布局组件、模型是什么、事件和侦听器是什么等等@Reshad另外,作为一句话的补充,不要使用NetBeans中的GUI设计器或Eclipse中的Windowbuilder Pro中的GUI设计器。这就是我在“学习”Java swing时浪费了大约6个月时间的原因。这是您的模型,它作为构造函数的一部分传递给您的视图(在本例中,它可能是一个JTable,可能在JScrollPane中,也可能在JFrame中)。@Reshad:您将无法通过复制粘贴在Internet上找到的代码来使用swing,并且不了解swing是如何工作的。阅读本教程,了解组件是什么、如何布局组件、模型是什么、事件和侦听器是什么等等@Reshad另外,作为一句话的补充,不要使用NetBeans中的GUI设计器或Eclipse中的Windowbuilder Pro中的GUI设计器。这就是我在“学习”JavaSwing时浪费了大约6个月的时间。这是您的模型,它作为构造函数的一部分传递给您的视图(在本例中,它将是一个JTable,可能在JScrollPane中,也可能在JFrame中)。