cs_nosil
Messages postés37Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention20 octobre 2005
-
22 juin 2004 à 15:33
bastet1978
Messages postés54Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 4 décembre 2005
-
25 août 2005 à 15:33
Bonjour a tous.....J'ai urgemment besoin de votre savoir !!!!
Je cree une application lier a une base de donnee PostgreSQL, (Eh oui, je suis sous linux, mais change rien au probleme) et j'aimerais inserer un JCheckBox dans une JTable....
Je vous donne mon code :
public class filsTableModel extends AbstractTableModel
{
private ResultSet rs = null;
private int rowcount = 0;
private Object data[][];
public Object getValueAt(int row, int col)
{
return data[row][col];
}
public boolean IsCellEditable(int row, int col)
{
if (col > 1 )
return false;
else
return true;
}
public Class getColumnClass(int c)
{
return getValueAt(0, c).getClass();
}
}
Et pour la fenetre dont la JTable :
public class FenetreGenPresence extends JFrame
{
GridBagLayout gridBagLayout1 = new GridBagLayout();
JPanel jPanel1 = new JPanel();
JComboBox jComboBox1 = new JComboBox();
JCheckBox myCheckBox = new JCheckBox();
XYLayout xYLayout1 = new XYLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JTable jTable1 = new JTable();
String data = null;
Statement s = null;
JComboBox jComboBox2 = new JComboBox();
cs_nosil
Messages postés37Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention20 octobre 2005 22 juin 2004 à 16:52
Argh, desole......je me suis trompe de class....
Je voulais pas mettre la class filsTablemodel mais TableModele...
Bon, je reessaye....
public class FenetreGenPresence extends JFrame
{
GridBagLayout gridBagLayout1 = new GridBagLayout();
JPanel jPanel1 = new JPanel();
JComboBox jComboBox1 = new JComboBox();
JCheckBox myCheckBox = new JCheckBox();
XYLayout xYLayout1 = new XYLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JTable jTable1 = new JTable();
String data = null;
Statement s = null;
JComboBox jComboBox2 = new JComboBox();
public class TableModele extends AbstractTableModel
{
private ResultSet rs = null;
private int rowcount = 0;
public TableModele(ResultSet r)
{
this.rs = r;
try
{
this.rs.last();
this.rowcount = this.rs.getRow();
this.rs.first();
} catch (Exception e)
{
this.rs = null;
}
}
public int getRowCount()
{
return (this.rowcount );
}
public int getColumnCount()
{
try
{
return (this.rs.getMetaData().getColumnCount() + 1);
} catch (Exception e)
{
return (0);
}
}
public Object getValueAt(int row, int col)
{
try
{
this.rs.first();
this.rs.relative(row);
return ((Object) this.rs.getString(col));
} catch (Exception e)
{
return (null);
}
}
public boolean IsCellEditable(int row, int col)
{
if (col > 1 )
return false;
else
return true;
}
public ResultSet getResultSet()
{
return rs;
}
}
voila, c deja mieux.....
Dans cet etat la, il m'affiche une colonne avec des champs vide, la ou je veux mettre mes JCheckBox, et les colonnes avec les champs recuperer de la base de donnee...
Et pour les JCheckBox dns ls JTable, c fait directement par le JTable si vous enregistrez la donnee de cette facon: "new Boolean(true)" dans l'Object[][] que vous utilisez pour votre JTable. Maintenant le problème qui se pause est que souvent on réécrit un AbstractTableModel et que l'on oublie une partie importante qui permet a la JTable de savoir quelles données elle doit traiter dans cette cellule:
public Class getColumnClass(int col) {
return getValueAt(0, col).getClass();
}
nb:
Voici les formats que le JTable peut afficher de base.
Apres il faut rajouter quelques lignes :) pour un renderer plus
complexe.
<li>
Boolean
rendered with a check box.
</li><li>
Number
rendered by a right-aligned label.
</li><li>
Double
,
Float
same as
Number
,
but the object-to-text translation is performed by a