Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517

    [JAVA] PROBLEMI getRowCount

    Salve ragazzi ho questo errore:

    java.lang.ArrayIndexOutOfBoundsException: 11 >= 11

    quando devo andare ad eliminare tutte le righe da una tabella:

    il codice per l'eliminazione è:

    codice:
    	int numerorighe=jTableRicerca.getRowCount();
    							System.out.println(numerorighe);
    							if(numerorighe>0){
    								int j=0;
    							while(numerorighe>j){
    								System.out.println("righe "+numerorighe);
    								System.out.println("j: "+j);
    							model.removeRow(j);
    							j++;
    							}
    							}
    ho fatto stampare le righe e la variabile j:

    righe 22
    j: 0
    righe 22
    j: 1
    righe 22
    j: 2
    righe 22
    j: 3
    righe 22
    j: 4
    righe 22
    j: 5
    righe 22
    j: 6
    righe 22
    j: 7
    righe 22
    j: 8
    righe 22
    j: 9
    righe 22
    j: 10
    righe 22
    j: 11

    e non capisco perchè mi va in errore

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] PROBLEMI getRowCount

    Originariamente inviato da il pupo
    codice:
    	int numerorighe=jTableRicerca.getRowCount();
    							System.out.println(numerorighe);
    							if(numerorighe>0){
    								int j=0;
    							while(numerorighe>j){
    								System.out.println("righe "+numerorighe);
    								System.out.println("j: "+j);
    							model.removeRow(j);
    							j++;
    							}
    							}
    Devi:
    a) Partire ad eliminare dal fondo (dall'ultimo indice esistente).
    oppure
    b) Partire dal indice 0 ma facendo un loop in cui la condizione testi effettivamente il row-count reale (non una variabile preimpostata come sopra).

    In generale sarebbe meglio la soluzione a) per questioni di efficienza. Dentro il model c'è una struttura dati che tipicamente è un List (es. ArrayList o Vector) ed è preferibile eliminare dal fondo (altrimenti la collezione deve spostare indietro di 1 posizione tutti gli elementi successivi!).

    Tra l'altro, dal momento che usi un DefaultTableModel, basterebbe, in questo caso specifico, fare banalmente: model.setRowCount(0);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ciao andbin grazie per la risposta,

    ho provato cosi :
    model.setRowCount(0);
    ma non funziona, comunque rimangono in tabella i vecchi record

    ora provo la soluzione 'a' e ti faccio sapere

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ciao andbin

    ho provato anche la soluzione a , ma niente sempre lo stesso errore

    codice:
    int numerorighe=jTableRicerca.getRowCount();
    							System.out.println(numerorighe);
    							if(numerorighe>0){
    							int j=numerorighe;
    							while(j>0){
    								System.out.println("righe "+numerorighe);
    								System.out.println("j: "+j);
    							model.removeRow(j);
    							j--;
    							}
    							}

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.