Listmodel

banybear2010

New Member
25/10/11
9
0
1
Mình có đoạn code thêm sinh viên vào listmodel như sau, sao mỗi lần mình thêm nó không add tiếp vào list mà nó lại tạo ra một list mới
public void actionPerformed(ActionEvent arg0) {
ArrayList<SinhVien> arrSV=new ArrayList<SinhVien>();
arrSV.add(new SinhVien(Integer.parseInt(txtNamSinh.getText()), txtTen.getText()));
Collections.sort(arrSV);
DefaultListModel dfl=new DefaultListModel();
for(SinhVien s:arrSV)
dfl.addElement(s.hoTen+" "+s.namsinh);
list_DS.setModel(dfl);
}
});
 
Sửa lần cuối:

Joe

Thành viên VIP
21/1/13
2,969
1,310
113
PHP:
...
ArrayList<SinhVien> arrSV=new ArrayList<SinhVien>(); // <<< trouble is here!
...
Sorry that I give you an English reply.
Mình có đoạn code thêm sinh viên vào listmodel như sau, sao mỗi lần mình thêm nó không add tiếp vào list mà nó lại tạo ra một list mới
The reason is that each time an action is performed a NEW arraylist is created and then discarded after termination of the actionPerformed method.
If you want to continue the list you have to move arrSV out and declare it as a global arrayList and extend the list with new elements.
 

D.A.N_3002

Active Member
14/11/17
177
49
28
17
Mình có đoạn code thêm sinh viên vào listmodel như sau, sao mỗi lần mình thêm nó không add tiếp vào list mà nó lại tạo ra một list mới
Code:
            public void actionPerformed(ActionEvent arg0) {
                ArrayList<SinhVien> arrSV=new ArrayList<SinhVien>();
                arrSV.add(new SinhVien(Integer.parseInt(txtNamSinh.getText()), txtTen.getText()));
                Collections.sort(arrSV);       
                DefaultListModel dfl=new DefaultListModel();
                    for(SinhVien s:arrSV)
                        dfl.addElement(s.hoTen+" "+s.namsinh);               
                list_DS.setModel(dfl);
            }               
        });
Vấn đề của bạn ở đây chính là mỗi lần cái action này được thực hiện thì nó sẽ tạo ra 1 mảng mới và không chứa vào cái mảng cũ nữa.
==> Giải pháp cho bạn là tạo ra 1 mảng là biến toàn cục, rồi mỗi lần action đó thực hiện thì add vào cái mảng đó luôn.