如何在Swing GUI中启动JTable?

时间:2011-10-07 13:49:04

标签: java swing

我正在尝试在GUI中填充JTable并且很难做到这一点。我知道我错过了一些简单但我无法弄明白的东西。我创建了自己的abstractTableModel并将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;
   }
}

}

3 个答案:

答案 0 :(得分:2)

也许你没有正确地将JTable添加到屏幕上?您可以尝试一个简单的测试:

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

如果确实getTransactions()返回行 - 您将能够看到它们(没有列标题,因为它们未在您的代码中定义)。

答案 1 :(得分: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){

答案 2 :(得分:0)

既然你说camickr的答案没有解决你实际问的问题,我唯一能想到的是getTransactions()返回一个空列表。因此,表中没有要显示的行(数据)。