Ajouter des bouton dans un JTable

genjouna Messages postés 22 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 17 mars 2011 - 5 août 2010 à 11:32
 kheiraboukhalfa - 25 mai 2013 à 16:42
slt tout le monde,
j'ai un tableau qui est rempli par des données prises de ma base de donnée mais je veux faire des actions sur ma table :je veux ajouter des boutons à chaque ligne (modifier) et (supprimer).mais je n'arrive pas a ajouter ces boutons comment je peux faire ça .
voici mon code:


public String getColumnName(int column) {
if (columnNames[column] != null) {
return columnNames[column];

} else {
return "";
}
}

public Class getColumnClass(int column) {
int type;
try {
type = metaData.getColumnType(column+1);
}
catch (SQLException e) {
return super.getColumnClass(column);
}

switch(type) {
case Types.CHAR:
case Types.VARCHAR:
case Types.LONGVARCHAR:
return String.class;

case Types.BIT:
return Boolean.class;

case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
return Integer.class;

case Types.BIGINT:
return Long.class;

case Types.FLOAT:
case Types.DOUBLE:
return Double.class;

case Types.DATE:
return java.sql.Date.class;

default:
return Object.class;
}
}

public boolean isCellEditable(int row, int column) {
try {
return metaData.isWritable(column+1);
}
catch (SQLException e) {
return false;
}
}

public int getColumnCount() {
return columnNames.length;
}


// Data methods

public int getRowCount() {
return rows.size();
}

public Object getValueAt(int aRow, int aColumn) {
Vector row = (Vector)rows.elementAt(aRow);
return row.elementAt(aColumn);
}

public String dbRepresentation(int column, Object value) {
int type;

if (value == null) {
return "null";
}

try {
type = metaData.getColumnType(column+1);
}
catch (SQLException e) {
return value.toString();
}

switch(type) {
case Types.INTEGER:
case Types.DOUBLE:
case Types.FLOAT:
return value.toString();
case Types.BIT:
return ((Boolean)value).booleanValue() ? "1" : "0";
case Types.DATE:
return value.toString(); // This will need some conversion.
default:
return """+value.toString()+""";
}

}

public void setValueAt(Object value, int row, int column) {
try {
String tableName = metaData.getTableName(column+1);
// Some of the drivers seem buggy, tableName should not be null.
if (tableName == null) {
System.out.println("Table name returned null.");
}
String columnName = getColumnName(column);
String query "update "+tableName+" set "+columnName+" "+dbRepresentation(column, value)+ " where ";
// We don't have a model of the schema so we don't know the
// primary keys or which columns to lock on. To demonstrate
// that editing is possible, we'll just lock on everything.
for(int col = 0; col<getColumnCount(); col++) {
String colName = getColumnName(col);
if (colName.equals("")) {
continue;
}
if (col != 0) {
query = query + " and ";
}
query query + colName +" "+
dbRepresentation(col, getValueAt(row, col));
}
System.out.println(query);
System.out.println("Not sending update to database");
statement.executeQuery(query);
}
catch (SQLException e) {
// e.printStackTrace();
System.err.println("Update failed");
}
Vector dataRow = (Vector)rows.elementAt(row);
dataRow.setElementAt(value, column+1);

}
}

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 août 2010 à 11:54
Salut,

Toujours la même solution : faire un CellRenderer et un CellEditor.

C'est ces classes là qui te permettent de personnaliser un JTable.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
kheiraboukhalfa
25 mai 2013 à 16:42
0
Rejoignez-nous