Se connecter / S'enregistrer
Votre question

changer la couleur d'une case dans un JTable

Tags :
  • Swing
  • Programmation
Dernière réponse : dans Programmation
23 Mai 2008 00:19:42

je voulais changer la couleur d'une cellule dans un JTable alors j'ai créé la classe suivante

import java.awt.Color;
import java.awt.Component;

import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class RedRenderer extends DefaultTableCellRenderer {

/**
*
*/
private static final long serialVersionUID = 1L;


public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

// Tu appelles la méthode par défaut, qui te construit la case
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, 0, 0);


// Tu changes la couleur de la case
c.setBackground(Color.RED);
c.setForeground(Color.MAGENTA);

return table;


}
}



et quand je fait l'appel de ctte classe dans une autre

maJTable.setDefaultRenderer(null,new RedRenderer());
((RedRenderer)maJTable.getDefaultRenderer()).changeColors = true;
mais le problème est que ne se change


Autres pages sur : changer couleur case jtable

23 Mai 2008 11:42:20

heu... t'aurais une grosse trace, genre, nullpointerException qqpart ?
23 Mai 2008 11:47:55

je n'ai pas compris???
Contenus similaires
23 Mai 2008 11:50:18

quand tu fais appel à
  1. maJTable.setDefaultRenderer(null,new RedRenderer());


tu n'as pas une erreur ?
23 Mai 2008 12:49:23

non aucune erreur
23 Mai 2008 13:53:14

change ça :
  1. maJTable.setDefaultRenderer(String.class,new RedRenderer());

(toutes tes string auront un background rouge.

et dans redRenderer, rajoute un constructeur par défaut, et appelle
  1. setOpaque(true);


et dans la méthode getTableCellRendererComponent, fait un
  1. return c;
au lieu d'un return table.
23 Mai 2008 14:02:09

Dernière chose, il faut que ton JTable comporte un TableModel
  1. jTable = new JTable(new MyTableModel());


avec MyTableModel :
  1. class MyTableModel extends AbstractTableModel {
  2. private String[] columnNames = {"First Name",
  3. "Favorite Color",
  4. "Sport",
  5. "# of Years",
  6. "Vegetarian"};
  7. private Object[][] data = {
  8. {"Mary", "ert", "Snowboarding", new Integer(5), new Boolean(false)},
  9. {"Alison", "ert", "Rowing", new Integer(3), new Boolean(true)},
  10. {"Kathy", "ert", "Knitting", new Integer(2), new Boolean(false)},
  11. {"Sharon", "ert", "Speed reading", new Integer(20), new Boolean(true)},
  12. {"Philip", "ert", "Pool", new Integer(10), new Boolean(false)}
  13. };
  14.  
  15. public int getColumnCount() {
  16. return columnNames.length;
  17. }
  18.  
  19. public int getRowCount() {
  20. return data.length;
  21. }
  22.  
  23. public String getColumnName(int col) {
  24. return columnNames[col];
  25. }
  26.  
  27. public Object getValueAt(int row, int col) {
  28. return data[row][col];
  29. }
  30.  
  31. /*
  32. * JTable uses this method to determine the default renderer/
  33. * editor for each cell. If we didn't implement this method,
  34. * then the last column would contain text ("true"/"false"),
  35. * rather than a check box.
  36. */
  37. public Class getColumnClass(int c) {
  38. return getValueAt(0, c).getClass();
  39. }
  40.  
  41. public boolean isCellEditable(int row, int col) {
  42. //Note that the data/cell address is constant,
  43. //no matter where the cell appears onscreen.
  44. if (col < 1) {
  45. return false;
  46. } else {
  47. return true;
  48. }
  49. }
  50. }


Exemple : http://java.sun.com/docs/books/tutorial/uiswing/compone...
24 Mai 2008 01:54:06

merci à vs mais je n'ai pas compris comment utiliser la classe MyTableModel et elle sert à quoi
merci
24 Mai 2008 10:37:44

ouais, alors, ici, c'est pas un cours de programmation...

on aide un peu, mais faut pas abuser. si tu ne sais pas chercher par toi même, laisse tomber la programmtion.
26 Mai 2008 12:28:33

Le tableModel est l'équivalent à la ListModel , un component te permettant de customiser un peu plus finement l'interaction et le design d'une JTable.

Le copier coller c'est mal , c'est bien connu ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS