我正在尝试在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;
}
}
}
答案 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()
返回一个空列表。因此,表中没有要显示的行(数据)。