Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Metodo: table.getValeAt(,) Errore risolvibile senza il try?

    Salve, come da titolo:

    codice:
    table = new JTable(modTab);
    
    for(int r=0; r<R; r++){
    
    String sData = new String("");
    
    for(int c=0; c<C; c++){
    
    if (!table.getValueAt(r,c).equals(null)) //cerco di gestire così l'eccezione, ma, inutilmente
    sData = table.getValueAt(r,c).toString().trim(); //riga eccezione
    
    }
    
    }
    Genera l'eccezione:
    "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

    L'istanza pare non essere caricata quando il testo della colonna è vuoto...ma...oppure è altro?
    Ultima modifica di jabjoint; 19-04-2022 a 17:59
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    codice:
    if (!table.getValueAt(r,c).equals(null)) //cerco di gestire così il codice, ma, inutilmente
    sData = table.getValueAt(r,c).toString().trim(); //riga eccezione
    Innanzitutto .equals(null) non ha alcun senso. La specifica di equals() è molto chiara:

    For any non-null reference value x, x.equals(null) should return false.

    Quindi passando null hai sempre false (indipendentemente da x), e con la tua negazione dà true ma il tuo test è sbagliato. Fai invece il test per != null

    Poi comunque c'è un'altra questione. Il tuo codice dovrebbe "parlare" solo con il model, non con JTable per estrarre i dati. C'è anche una motivazione pratica. In JTable c'è la funzionalità di column reordering che è attiva per default. Permette all'utente di "trascinare" le colonne a sinistra/destra per cambiarne l'ordine. Il getValueAt di JTable si basa su quest'ordine fisico, quindi se non disabiliti quella feature, non puoi essere certo di quali sono le colonne, se l'utente le trascina. Il getValueAt del model invece è "stabile" sulle colonne perché il loro ordine è definito programmaticamente.

    Può aver senso usare il getValueAt di JTable solo se ad esempio vuoi "esportare" i dati in modo molto generico esattamente come li vede l'utente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok. Certo è corretto vedere la guida per le specifiche.
    Testero' con !=nulla.
    Si ho usato JTable per esportare su file, comunque trovo il tuo consiglio ottimo.
    Grazie.
    jabjoint

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.