Lista és model miért nem jó? (javaban, többi lent)
public class tanulok {
//(..itt van néhány sor,lásd:frame, panel))
JList <osztaly> lista;
DefaultListModel model = new DefaultListModel <>();
public tanulok(){
beallit(); //külön fgv-ben pl. frame mérete,hogy ne zavarjon
lista = new JList<>();
lista.setModel(model);
}
}
class osztaly(){
String nev;
double atlag;
}
Van egy ilyenem is,amit egy tanulok-ban lévő gombra hívok meg:
class atlagol_fgv implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
osztalya;
int i= model.getSize();
while(0<=i){
a=(osztaly_diak) model.get(i);
//(ide jön majd,hogy mit kezdjen a kinyert dolgokkal)
i--;
}
És ezzel van baja:
a=(osztaly_diak) model.get(i);
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 21 >= 21
at java.util.Vector.elementAt(Vector.java:470)
...
21-es szám akkor jön elő,ha 21 elem kerül a listába.
Remélem érthető voltam és köszi a segítséget.:)
Most csinálnék először ilyent.
Egyértelműen le van írva a hibaüzenetben.
Túlindexeled a listát.
Ha 21 elem van benne, akkor nincs 21. index benne, csak 20.
Pontosan, mivel az indexelés nullától történik.
H a tömb mérete (model.getSize();) 2-őt vissza, akkor azt jelenti, hogy a többen van egy 0. és egy 1. elem, azaz 2 db.
Viszont neked a while-ban a feltételed (ami nem is értem miért nem for vagy foreach), i-től vagyis a korábbi példámat tekintve 2-től indul, azaz model.get(2);-t kér le, ami nem létezik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!