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
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?
@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());
}
}
}
- Do poprawy, próbujesz wziąć text z JLabel zamiast JTextField
- Po kiego tworzysz nowe zmienne jak ich nie uzywasz? mówie o
storeName, storeSurname, storeAge
- Jak już tworzysz te zmienne to je przekaż do konstruktora
person.add(new Person(storeName, storeSurname, storeAge));
- Te * default persons* to wywal gdzie indziej, bo lista się będzie powiększać i powiększać...
- 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<>();
@toJaMichal dziękuje za pomoc:)
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
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
.
@bogdans dodałem słówko static jak zasugerowales i teraz działa. Wyjaśnisz mi czemu?
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ę.