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

    [JAVA] JTable e celle non editabili

    Utilizzando come modello della tabella JTable la Classe "DafaultTableModel" come posso (se si può) fare in modo che le celle non si possano editare???

    Grazie

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

    Re: [JAVA] JTable e celle non editabili

    Originariamente inviato da anatroccolo
    Utilizzando come modello della tabella JTable la Classe "DafaultTableModel" come posso (se si può) fare in modo che le celle non si possano editare???
    Estendi DafaultTableModel e fai l'override di isCellEditable().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazioe mille funziona!!!!!!!

  4. #4
    Ho creato il metodo ma quando modifico il valore, quello che cambio non viene memorizzato e ritorna il valore precedente. Ho letto che bisogna creare nel modelTable il metodo setValueAt, io l'ho creato ma non mi memorizza niente. Vi posto il codice di tale metodo!!
    Utilizzo in ogni caso come matrice per memorizzare i valori una lista di liste perche' ho necessita' di un inserimento dinamico dei dati

    codice:
     	 public void setValueAt(String value, int row, int col) {
    	    	
    		int countRiga = 0;
    		for (ArrayList<String> riga : parameterRow) {
    			if (row == countRiga)
    				riga.set(col,value);
    				parameterRow.set(row,riga);
    			countRiga++;
    	    }
    		
    	    fireTableCellUpdated(row, col);
    	 }
    Il metodo e' sbagliato oppure c'e' qualcos'altro da fare?????

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    Il metodo e' sbagliato oppure c'e' qualcos'altro da fare?????
    Il metodo indubbiamente non è il massimo ...... quel for non serve!!

    La tua struttura dati è un ArrayList di ArrayList di oggetti String, giusto? Fai un get() usando 'row' per prendere la riga e su questo ArrayList della riga fai un set() usando 'col' per impostare il valore della colonna.

    Quel parameterRow.set(...) non ne vedo il senso e l'utilità ....

    Ma quello che è più sbagliato (ed è per questo che non ti funziona) è la signature del metodo!!!!!!!!

    Devi (e ripeto devi) usare la signature indicata dalla interfaccia TableModel:

    void setValueAt(Object aValue, int rowIndex, int columnIndex)

    Se tu sai che sono stringhe, allora nel metodo fai un cast a String.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie mille!!adesso funziona!! l'errore era quella ma anche un altro, perche' quando utilizzavo quello che mi hai consigliato avevo un errore dei metodi get e set perche' lavoravano su indici non esistenti! ho modificato il codice in una sezione e adesso va! grazie ancora!

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.