|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
[JAVA] JTable & JComboBox
E' da alcuni giorni che sto provando a risolvere un problema con una jtable senza riuscirci.
Nel programma che sto scrivendo, vado a leggere la tabella UTENTI di un database Mysql. All'interno di questa tabella c'è un campo di tipo VARCHAR il cui contenuto è true o false che mi indica se un utente è abilitato o meno. Quello che voglio fare, è visualizzare i record in una jtable e, per la colonna ABILITATo, visualizzare una checkbox. Ho creato una classe generica per la gestione (connessione, query, ecc) del database a cui passo una stringa sql (es. SELECT * FROM UTENTI) ottendendo come valore di ritorno un vettore contenente tutti i record selezionati. Questo è una parte del codice della classe Database.java: Codice:
while(rs.next()) { record = new Vector(); for (int i = 0; i < colonne; i++) { record.add(rs.getString(i + 1)); } v.add(record.clone()); } Codice:
public TabellaSolaLettura(Vector tabellaDati, Vector tabellaNomColonne) { super(tabellaDati, tabellaNomColonne); } public boolean isCellEditable(int riga, int colonna) { return false; } public Class getColumnClass(int colonna) { return getValueAt(0, colonna).getClass(); } Codice:
public Class getColumnClass(int colonna) { switch (colonna) { case 7: return Boolean.class; default: return getValueAt(0, colonna).getClass(); } } Come posso risolvere? ![]()
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se nel campo puoi avere "true" oppure "false", Allora crea un Boolean (e c'è un costruttore di Boolean apposito che prende un String).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
Codice:
public Class getColumnClass(int colonna) { switch (colonna) { case 7: //return Boolean.class; Boolean abilitato = new Boolean(getValueAt(0, colonna).toString()); return abilitato.getClass(); default: return getValueAt(0, colonna).getClass(); } } ![]()
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
No, nel tuo Vector del record devi avere un Boolean se in getColumnClass fai ritornare un Boolean.class per quel valore!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
![]()
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
while(rs.next()) { record = new Vector(); for (int i = 0; i < colonne; i++) { record.add(rs.getString(i + 1)); } v.add(record.clone()); }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
![]() Codice:
for (int i = 0; i < colonne; i++) { if (rs.getString(i + 1).equals("true") || rs.getString(i + 1).equals("false")) { record.add(rs.getBoolean(i + 1)); } else { record.add(rs.getString(i + 1)); } } Grazie dell'aiuto! ![]()
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
If the designated column has a datatype of CHAR or VARCHAR and contains a "0" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT and contains a 0, a value of false is returned. If the designated column has a datatype of CHAR or VARCHAR and contains a "1" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT and contains a 1, a value of true is returned.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Rimetti pure il campo a BOOLEAN (o TINYINT(1) che poi è la stessa cosa) ma poi nel codice ovviamente non devi usare getString() per quella colonna!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
Codice:
for (int i = 0; i < colonne; i++) { if (rs.getString(i + 1).equals("1") || rs.getString(i + 1).equals("0")) { record.add(rs.getBoolean(i + 1)); } else { record.add(rs.getString(i + 1)); } } ![]()
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:55.