Witam.
Chciałbym stworzyć, aby każdy obiekt klasy student posiadał listę klasy przedmiot. Niestety nie wiem jak to rozegrać, by zrobić to w sposób prawidłowy.
Schematycznie wygląda to tak: student --> Przedmiot(lista).
Posiadam następujący kod:
Student.java
public class Student implements Comparable<Student>, Serializable{
private int NrAlbumu;
private String imie;
private String nazwisko;
public Student(int nrAlbumu,String imie, String nazwisko) {
this.NrAlbumu = nrAlbumu;
this.imie = imie;
this.nazwisko = nazwisko;
}
/**
*
* @return
*/
@Override
public String toString() {
return String.format("| %d | %-12s | %-12s |",NrAlbumu, imie, nazwisko);
}
public int getNrAlbumu() {
return NrAlbumu;
}
public String getImie() {
return imie;
}
public String getNazwisko() {
return nazwisko;
}
public void setNrAlbumu(int NrAlbumu) {
this.NrAlbumu = NrAlbumu;
}
public void setImie(String imie) {
this.imie = imie;
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
@Override
public int compareTo(Student listPracownikow) {
return nazwisko.compareToIgnoreCase(listPracownikow.nazwisko);
}
}
StudentListModel.java
public class StudentListModel extends AbstractListModel<Student>{
List<Student> list;
int point;
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public StudentListModel(List<Student> list) {
this.list = list;
}
@Override
public int getSize() {
return list.size();
}
@Override
public Student getElementAt(int index) {
return list.get(index);
}
void refresh() {
fireContentsChanged(this, 0, list.size()-1);
}
void addElement(Student p5) {
list.add(p5);
refresh();
}
void removeElement(Student p5)
{
list.remove(p5);
refresh();
}
void modyficationElement(Student p5, int i)
{
setPoint(i);
list.set(i, p5);
refresh();
}
void modyficationElement(Student p5, Student praco)
{
list.add(p5);
list.remove(praco);
refresh();
}
void sortByNazwisko() {
PracownikComparator pracownikComparator = new PracownikComparator();
pracownikComparator.setSortBy(PracownikComparator.BYNAZWISKO) ;
Collections.sort(list, pracownikComparator);
refresh();
}
void sortByWynagrodzenie() {
PracownikComparator pracownikComparator = new PracownikComparator();
pracownikComparator.setSortBy(PracownikComparator.BYNR) ;
Collections.sort(list, pracownikComparator);
refresh();
}
public void save()
{
try {
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("pracownicy.data"));
outputStream.writeObject(list);
outputStream.close();
refresh();
} catch (IOException ex) {
System.out.println("Wystąpił błąd zapisu");
ex.printStackTrace();
}
}
public void open()
{
try {
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("pracownicy.data"));
list = (List<Student>) inputStream.readObject();
inputStream.close();
refresh();
} catch (Exception ex) {
System.out.println("Wystąpił błąd odczytu");
ex.printStackTrace();
}
}
}