2012-12-26 59 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); 
      } 
     }); 
    } 

}