我在显示按名称对 Person 对象进行排序的方法的结果时遇到问题sortujKolekcjePoImionach()
。当我将它rozpocznijProgram()
放入加载一些名称并将其放入 Person 对象然后将每个 Person 放入 ArrayList 时,此方法非常有效。DefaultListModelmodel
刷新 Jlist 所以它工作得很好。但是,当我将方法放到sortujKolekcjePoImionach()
连接到单个按钮的其他 claas 时,它不起作用class sortujKolekcjePoImionach
。我不知道模型是否没有看到ArrayList daneOsobowe
已排序或者我可能不知道如何使用Collections.sort(daneOsobowe,new SortujImie());
主.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
}
}