Person オブジェクトを name でソートするメソッドの結果を表示する際に問題がありますsortujKolekcjePoImionach()
。このメソッドrozpocznijProgram()
は、いくつかの名前をロードして Person オブジェクトに入れ、すべての Person を ArrayList に入れると完璧に機能します。DefaultListModelmodel
は Jlist を更新するため、うまく機能します。しかし、sortujKolekcjePoImionach()
単一のボタンに接続する他のクラスにメソッドを配置すると、機能しませんclass sortujKolekcjePoImionach
。モデルArrayList daneOsobowe
がソートされたことを認識していないのか、それともおそらく使用方法がわからないのかわかりませんCollections.sort(daneOsobowe,new SortujImie());
Main.java
public class Main {
JFrame oknoGlowne;
JTextArea sciezkaDoPliku;
DefaultListModel<Person> model = new DefaultListModel<>();
JList listaOsob;
JButton wczytaj;
JButton sortujImie;
JButton sortujDate;
JButton sortujImieNazwiskoDate;
ArrayList daneOsobowe = new ArrayList();
public void createGUI(){
oknoGlowne = new JFrame("Kolekcje");
oknoGlowne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sciezkaDoPliku = new JTextArea();
wczytaj = new JButton("Wczytaj");
sortujImie = new JButton("Posortuj Imiona");
sortujDate = new JButton("Posortuj Daty");
sortujImieNazwiskoDate = new JButton("Posortuj Imiona Nazwiska Daty");
wczytaj.addActionListener(new rozpocznijProgram());
listaOsob = new JList(model); //MODEL
sortujImie.addActionListener(new sortujKolekcjePoImionach()); //TRYING TO SORT PERSON OBJECTS BY NAME
//rest of GUI...
oknoGlowne.setPreferredSize(new Dimension(870, 550));
oknoGlowne.setLayout(new FlowLayout());
oknoGlowne.setVisible(true);
oknoGlowne.pack();
}
//METHOD WHICH IS ADDING PERSON OBJECTS TO ARRAY
class rozpocznijProgram implements ActionListener{
@Override
public void actionPerformed(ActionEvent evt) {
try {
Wczytywanie wczytaj = new Wczytywanie(sciezkaDoPliku.getText());
daneOsobowe = wczytaj.kopiowanieTablicy(sciezkaDoPliku.getText());
//Collections.sort(daneOsobowe,new SortujImieNazwiskoData());
for(int i=0; i<daneOsobowe.size(); i++){
model.add(i, (Person) daneOsobowe.get(i));
System.out.println(model.get(i));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
//METHOD WHICH IS SORTING PERSON OBJECTS BY NAME
class sortujKolekcjePoImionach implements ActionListener{
@Override
public void actionPerformed(ActionEvent evt) {
Collections.sort(daneOsobowe,new SortujImie()); //IT DOESN'T WORK, JLIST DOESN'T CHANGE AFTER CLICK
}
}