2011-10-07 64 views
0

我想在GUI中填充一個JTable,我很難做到這一點。我知道我錯過了一些簡單的東西,但我無法弄清楚什麼。我已經創建了自己的AbstractTableModel上,我設置的GUI JTable中這是行不通的model..but ....這裏是我的代碼:如何在Swing GUI中啓動JTable?

//Here I Try to start and populate the JTable 
myTableModel tModel = new myTableModel(a) 
transTable.setModel(tModel); 

這裏是我做了示範:

package edu.byu.isys.rmyers4.gui; 

import javax.swing.table.AbstractTableModel; 


public class myTableModel extends AbstractTableModel { 

Account a = null; 

public myTableModel (Account c){ 

    this.a = c; 

} 

@Override 
public int getRowCount() { 
    return a.getTransactions().size(); 
} 

@Override 
public int getColumnCount() { 
    return 4; 
} 

@Override 
public Object getValueAt(int row, int col) { 
    if(col == 0) 
    { 
     if(a.getTransactions().get(row).isDebit()) 
     return "Deposit"; 
    } 
    else 
    { 
     return "Withdrawal"; 
    } 
    if(col == 1){ 
     return a.getTransactions().get(row).getAmount(); 

    } 
    else if(col == 2){ 
     return a.getTransactions().get(row).getMemo(); 

    } 
    else if(col == 3){ 
     return a.getTransactions().get(row).getDate(); 

    } 

    else{ 
     return null; 
    } 
} 

}

+0

什麼「不起作用」?數據沒有顯示出來嗎?你有例外嗎?你必須給我們更多的背景。 – unholysampler

+0

@unholysampler雅數據不顯示。一切正常,沒有錯誤和其他一切正在工作......表中只有沒有數據,即使應該從中獲取數據的對象中有數據。 – Rmyers

+1

請學習java命名約定並堅持到他們 – kleopatra

回答

1

也許你沒有正確地將JTable添加到屏幕上?您可以嘗試一個簡單的測試:

JFrame frame = new JFrame(); 
frame.setExtendedState(Frame.MAXIMIZED_BOTH); 
frame.setContentPane(transTable); 
frame.setVisible(true); 

如果確實getTransactions()返回行 - 你將能夠看到他們(不列標題,因爲它們不是在你的代碼中定義)。

0

一個問題是以下幾點:

if(col == 0) 
{ 
    if(a.getTransactions().get(row).isDebit()) 
    return "Deposit"; 
} 
else 
{ 
    return "Withdrawal"; 
} 
if(col == 1){ 

應該是:

if(col == 0) 
{ 
    if(a.getTransactions().get(row).isDebit()) 
    { 
     return "Deposit"; 
    } 
    else 
    { 
     return "Withdrawal"; 
    } 
} 
if(col == 1){ 
+0

呵呵,這是一個問題,謝謝。不幸的是,這並沒有真正幫助我解決我的主要問題,那就是沒有數據顯示在桌面上 – Rmyers

0

既然你說過camickr的回答並不能解決你實際詢問的問題,我唯一能想到的就是getTransactions()正在返回一個空的列表。因此,表中不會顯示行(數據)。