У меня есть HashMap<Person, ArrayList<Account>>
, и я хочу таблицу со всеми ключами (Persons) из HashMap. Проблема в том, что таблица пуста, если я пытаюсь создать ее в представлении, но если я создаю ее в main (с точно таким же кодом), она работает и заполняется данными. Я не знаю почему.
public class App
{
public static void main( String[] args )
{
View view = new View();
Bank b = new Bank();
Person p = new Person("Name","Prenume", "id");
Person p1 = new Person("Name2","Prenume2", "id2");
b.addPerson(p);
b.addPerson(p1);
view.personTbl = view.tablePers(b.mapper);
view.sp = new JScrollPane(view.personTbl);
view.personFrame.add(view.sp,BorderLayout.CENTER);
view.viewPers.setVisible(true);
}
}
Если я создаю его таким образом, он не работает
public View() {
personFrame = new JFrame("Person");
personFrame.setLayout(new BorderLayout());
personFrame.setSize(400, 400);
persBtnsPan = new JPanel();
viewPers = new JFrame("View Pers");
viewPers.setLayout(new BorderLayout());
viewPers.setSize(400, 400);
viewPersPan = new JPanel();
addPerson = new JButton("add");
editPerson = new JButton("edit");
viewP = new JButton("view");
personTbl = tablePers(b.mapper);
sp = new JScrollPane(personTbl);
persBtnsPan.add(addPerson);
persBtnsPan.add(editPerson);
persBtnsPan.add(viewP);
personFrame.add(persBtnsPan, BorderLayout.NORTH);
personFrame.add(sp,BorderLayout.CENTER);
}
Это метод, который создает таблицу
public static <T> JTable tablePers(HashMap<Person, ArrayList<Account>> map) {
DefaultTableModel model = new DefaultTableModel(
new Object[] { "Nume", "Prenume", "CNP" }, 0);
for (HashMap.Entry<Person, ArrayList<Account>> entry : map.entrySet()) {
model.addRow(new Object[] { entry.getKey().getNume(), entry.getKey().getPrenume(), entry.getKey().getCnp() });
}
tab = new JTable(model);
return tab;
}