Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54

    Inserire JCheckBoxes dentro la colonna di una JTable

    Ciao a tutti
    so che questo problema è stato posto parecchie volte e che in giro per il web si trova molto..
    per quanto riguarda me, ho fatto riferimento alla guida di Oracle sulle JTable
    ( http://download.oracle.com/javase/tu...nts/table.html )

    A quanto ho capito per fare in modo di inserire una checkbox dentro una cella di una jtable bisogna modificare il table model.
    Ho letto che bisogna modificare queste stringhe:

    codice:
     public int getColumnCount() { 
    return columnNames.length; }
    e implementare i metodi isEditable e hasFocus.

    Dopo svariati tentativi non sono riuscito comunque a concludere nulla, e non riesco proprio a capire come fare per fare in modo che solo l'ultima colonna della mia jtable debba contenere delle jcheckboxes.

    Mi scuso perchè mi rendo conto che esistono tanti topic su questo forum riguardo a questo problema, ma non sono proprio riuscito a capirci nulla .

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

    Re: Inserire JCheckBoxes dentro la colonna di una JTable

    Originariamente inviato da rodfval
    A quanto ho capito per fare in modo di inserire una checkbox dentro una cella di una jtable bisogna modificare il table model.
    Per avere nella colonna dei "checkbox" è sufficiente che il table model "esponga" come tipo della colonna (dal getColumnClass) un Boolean.class e poi ovviamente l'Object gestito nelle celle deve essere un Boolean.
    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
    Dec 2010
    Messaggi
    54
    è sufficiente che il table model "esponga" come tipo della colonna (dal getColumnClass) un Boolean.class
    e fin qui .. tutto ok
    ora la mia domanda è: come si può fare in modo che solo quella colonna deve contenere delle checkboxes e le altre colonne dei caratteri normali ?

    il tutto non mi è ancora ben chiaro nonostante abbia letto e riletto le guide

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rodfval
    ora la mia domanda è: come si può fare in modo che solo quella colonna deve contenere delle checkboxes e le altre colonne dei caratteri normali ?
    Se la colonna deve avere i checkbox il getColumnClass fa restituire Boolean.class. Per altre colonne .... può restituire qualcos'altro (ad esempio Object.class che è il default e fa gestire gli Object visualizzando la stringa dal toString()).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54
    ho risolto ! grazie dell'aiuto !

    mi è bastato inserire nel table model

    codice:
    public Class getColumnClass(int col)
    		    	    { if(col<5) return String.class;
    					return Boolean.class;
    		    	    	
    		    	    }
    pensavo che era una cosa più difficile da fare XD

    pacioccando un pò ho anche capito come far per renderle non editabili o editabili tramite
    isCellEditable.
    Ora proverò a inserire pulsanti in un altra colonna, grazie dell'aiuto!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rodfval
    mi è bastato inserire nel table model

    codice:
    public Class getColumnClass(int col)
    		    	    { if(col<5) return String.class;
    					return Boolean.class;
    		    	    	
    		    	    }
    Sì, corretto. Invece che String.class bastava anche solo Object.class. La gestione di questo Class funziona così: il getColumnClass ritorna X.class. Se in JTable c'è una mappatura diretta per X.class ok. Altrimenti cerca un Y.class (Y superclasse di X), se c'è ok. Altrimenti ancora Z.class (Z superclasse di Y), ecc....

    E in effetti per default non c'è una mappatura per String.class quindi di base comunque userebbe il renderer/editor associato a Object.class.

    Originariamente inviato da rodfval
    Ora proverò a inserire pulsanti in un altra colonna
    Questo è più complesso, perché entra in gioco sia un renderer sia un editor specializzato (da scrivere appositamente, se non trovi qualcosa di già fatto).

    Vedi tra i miei Java Examples (dal mio sito), nella sezione AWT/Swing - Tables. C'è l'esempio bello pronto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    Salve, cercando nel forum ho letto la vostra conversazione.
    Anche io devo fare questa cosa e ho fatto

    codice:
    public Class getColumnClass(int col)
    		    	    { if(col<5) return String.class;
    					return Boolean.class;
    		    	    		    	    }
    Ora però vorrei che quando l'utente clicca su quella riga, il checkbox si selezioni.
    Come si deve fare?

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.