2012-12-26 61 views
1

你好我是Java的新手,我正在通过创建一个简单的列表应用程序来练习。如何在JFrame上添加对象

一切工作到现在,但我有一个简单的事情的问题。如何打印以表格的形式我的屏幕上的值

 To Do  Date added 
Delete nothing 1-1-2012 
Delete something 2-2-2013 
Delete test  3-2-2012 

我已经做

while(rs.next()) { 
    System.out.println(rs.getInt("id") + "\n" + rs.getString("item") + "\n" + rs.getDate("datum")); 
} 

我有一个MVC的设计,但因为创造了这个现在一切都一个println得到我的控制台中的每个记录你期望我的VIEW是空的。 我的问题在视图的帮助下,在我的JFrame上打印出来的最佳方式是什么?

+5

阅读[Swing教程](http://docs.oracle.com/javase/tutorial/uiswing/)。首先是基础知识,然后可能是关于JTable的部分。并做好准备:这不是“简单的事情”。你必须学习很多东西,这需要时间。 –

回答

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构造函数,你应该是金色的。让我知道你是怎么办的。

+0

这进入我的观点吧? – Reshad

+4

@Reshad:你将无法通过在互联网上找到的粘贴代码来复制Swing,也无法理解Swing如何工作。阅读教程以了解组件是什么,组件如何布置,模型是什么,事件和听众是什么等等。 –

+1

@Reshad另外,作为JB Nizet语句的一个附件,不要使用任何GUI设计器在Eclipse中的NetBeans或Windowbuilder Pro中。这就是我在学习Java swing的过程中浪费了6个月的时间。 –

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

}