【发布时间】: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;
}
我确信租金会增加,因为 toString() 有效。
【问题讨论】:
-
贴出的代码看起来很合理,但我们不知道代码是如何使用的上下文。也许您有两个 JTable 实例,一个在 JFrame 上可见,一个仅位于内存中。执行 System.out.println(table) a) 当您将表格添加到框架时和 b) 当您在表格上设置模型时。确保它是同一个实例。也许您有两个创建表的类实例。很多时候,我看到人们创建一个扩展 JFrame 的类,然后在该类中创建一个 JFrame。关键是没有上下文,我们无法判断发生了什么。你需要调试。
-
我发现了一个错误。创建对象时,它没有将自己添加到列表中。我的错。感谢您的回答。
标签: java swing class jtable jcalendar