【问题标题】:Empty JTable of objects对象的空 JTable
【发布时间】:2020-10-06 12:17:56
【问题描述】:

我在使用 JTable 时遇到问题。我正在创建一个“图书馆”程序,并且有一个“出租”课程。它包含用户、书籍和日期。问题是没有显示贷款。

出租类:

    public Wypozyczenia(Uzytkownik uzytkownik, Ksiazka ksiazka, Calendar dataWypozyczenia,Calendar dataZwrotu){
    this.uzytkownik = uzytkownik;
    this.ksiazka = ksiazka;
    this.dataWypozyczenia = dataWypozyczenia;
    this.dataZwrotu = dataZwrotu;
    this.uzytkownik.dodajWypozyczenie(this);
}

JTable 类:

WypozyczenieOddaj tablicaModelKsaizki = new WypozyczenieOddaj(Dane.wypozyczenia);
tabelaKsiazki.setModel(tablicaModelKsaizki);

--

class WypozyczenieOddaj extends AbstractTableModel {

private List<Wypozyczenia> li = new ArrayList();
private String[] columnNames = {"Imie", "Nazwisko"};

public WypozyczenieOddaj(List<Wypozyczenia> list) {
    this.li = list;
}

@Override
public String getColumnName(int columnIndex) {
    return columnNames[columnIndex];
}

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

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

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    Wypozyczenia x = Dane.wypozyczenia.get(rowIndex);
    switch (columnIndex) {
        case 0:
            return x.getUzytkownik();
        case 1:
            return x.getKsiazka();
    }
    return null;
}

result

我确信租金会增加,因为 toString() 有效。

【问题讨论】:

  • 贴出的代码看起来很合理,但我们不知道代码是如何使用的上下文。也许您有两个 JTable 实例,一个在 JFrame 上可见,一个仅位于内存中。执行 System.out.println(table) a) 当您将表格添加到框架时和 b) 当您在表格上设置模型时。确保它是同一个实例。也许您有两个创建表的类实例。很多时候,我看到人们创建一个扩展 JFrame 的类,然后在该类中创建一个 JFrame。关键是没有上下文,我们无法判断发生了什么。你需要调试。
  • 我发现了一个错误。创建对象时,它没有将自己添加到列表中。我的错。感谢您的回答。

标签: java swing class jtable jcalendar


【解决方案1】:

我还没有看到您指定要填充到 JTable 的数据源,即系统将从哪里获取租金值。 无论是列表还是来自您的数据库.. 你可以简单地使用

Object [] data = {user, book}
tablicaModelKsaizki.addRow(data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多