|
|||||||
|
|
|
![]() |
|
|
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: 00:02.




















