Я создал класс, который должен показывать JTable, заполненный данными, взятыми из базы данных с помощью hibernate:
public class FLlistes extends JInternalFrame {
private JTable table;
private DefaultTableModel model;
//some code for more components of the form
String[] columns = {"Id","Data", "Lloc"};
model = new DefaultTableModel(columns, 0) {
@Override
public Class<?> getColumnClass(int columna) {
if (columna == 2)
return LocalDate.class;
return Object.class;
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(49, 176, 732, 361);
getContentPane().add(scrollPane);
scrollPane.setViewportView(table);
//some code for more components of the form
}
Затем у меня есть класс, который выполняет запросы с помощью hibernate. Следующий метод должен собрать данные из таблицы и заполнить таблицу, которую я создал ранее.
public class AccionsBD {
public static void GetAllLlistes() {
String jql = "select llc from LlistaCompra llc";
EntityManager entityManager = JPAUtil.getEntityManagerFactory().createEntityManager();
TypedQuery<LlistaCompra> q = entityManager.createQuery(jql,LlistaCompra.class);
List<LlistaCompra> llistes = q.getResultList();
FLlistes fl = new FLlistes();
for (LlistaCompra llista: llistes) {
System.out.println(llista.getIdLlista());
System.out.println(llista.getData());
System.out.println(llista.getLloc());
Object[] objFila = new Object[3];
objFila[0] = llista.getIdLlista();
objFila[1] = llista.getData();
objFila[2] = llista.getLloc();
fl.getModel().addRow(objFila);
}
entityManager.close();
}
}
Цель System.out.println внутри l oop состоит только в том, чтобы проверить, что запрос работает. Запрос работает нормально, я попытался отладить, и конец l oop objFila содержит все правильные данные, но таблица в форме никогда не показывает ничего, кроме заголовка таблицы. Чего мне не хватает?
Кроме того, по какой-то причине иногда, когда я запускаю приложение, появляется форма, а иногда нет. Это происходит без изменения кода. Почему это происходит?
Редактировать: это мой получатель:
public DefaultTableModel getModel() {
return model;
}