Jframe i arrayList

0

chciałbym JOptionPane.showInputDialog(person.toString()); wypisać sobie listę z obiektami klasy person. Niestety pojawia mi się błąd. Jak się to powinno poprawnie napisać?
https://paste.ofcode.org/85GizB9X6GEmp9cc2LNa9h

1

Szklana kula dzisiaj nie działa, wróżka się rozchorowała, a karty tarota zamokły. Jaki masz błąd? Albo lepiej napisz, co chcesz osiągnąć.

Chcesz zamienić ArrayList do Stringa, czy też wklepane wartości skonwertować do klasy Person i dorzucić do ArrayListy?

0
    @Override
    public void actionPerformed(ActionEvent e) {

        //default persons
        Person person1 = new Person("Jan", "Kowalski", 22);
        Person person2 = new Person("Pawel", "Nowak", 22);
        person.add(person1);
        person.add(person2);

//new person from input text field
        if (e.getSource() == buttonStatus) {
            storeName = name.getText();
            storeSurname = surname.getText();
            storeAge = Integer.parseInt(textAge.getText());
            person.add(new Person(name, surname, age));

            JOptionPane.showInputDialog(person.toString());

        }
    }
}
  1. Do poprawy, próbujesz wziąć text z JLabel zamiast JTextField
  2. Po kiego tworzysz nowe zmienne jak ich nie uzywasz? mówie o storeName, storeSurname, storeAge
  3. Jak już tworzysz te zmienne to je przekaż do konstruktora person.add(new Person(storeName, storeSurname, storeAge));
  4. Te * default persons* to wywal gdzie indziej, bo lista się będzie powiększać i powiększać...
  5. w klasie Person wygeneruj toString(), bo zaraz będzie następny błąd :P

a co do błędu

    private ArrayList<Person> person;

brakuje new ArrayList<>();

0

@toJaMichal dziękuje za pomoc:)

0

Mała aktualizacja. czemu lista jest cały czas pusta, po wpisaniu ich do formularza z ręki?

chodzi mi o wywołanie JOptionPane.showMessageDialog(null, personsList.size()); w klasie checkListPerson

https://paste.ofcode.org/38dDj3y7Y27aQh8zbSkW3BK

0

W programie są dwie zmienne listy o nazwie personsList. Zapewne do jednej dodajesz, a drugą wyświetlasz.
Pole personsList w klasie Person jest trochę bez sensu - jeśli już jest to powinno być static.

0

@bogdans dodałem słówko static jak zasugerowales i teraz działa. Wyjaśnisz mi czemu?

0

Jak pole jest static, to jest wspólne dla wszystkich instancji (obiektów typu Person) - istnieje zatem tylko jedna lista osób. Dopóki pole nie było static, to każda instancja (obiekt typu Person) miała własną listę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1