OVH Cloud OVH Cloud

surcharger un DefaultCellRenderer

13 réponses
Avatar
yvon.thoravalNO-SPAM
j'ai un JTreeTable qui a des colonnes Boolean représentées par le
DefaultCellRenderer pour Boolean, c-à-d une checkbox.

je voudrais continuer à utiliser cette checkbox, à une condition, que la
valeur ne soit pas null.

c-à-d rien dans la row, column si valueAt == null et value.class =
Boolean sinon checkbox.

bien sûr ça doit marcher au run time et quelque soit l'indice de la
colonne (détection par la clase de la colonne).

qq'un a deja fait qqc dans ce genre ?

--
yt

3 réponses

1 2
Avatar
yvon.thoravalNO-SPAM
jocelyn wrote:

Par exemple dans ton cas, la méthode 1 n'est clairement pas un bon choix
puisque ce que tu veux afficher n'a rien (ou pas grand chose) d'un JLabel.


merci pour l'info qui me rassure :

public class BooleanNewRenderer extends Component implements
TableCellRenderer { ... }

MAIS, je me demandais, quand même si au lieu d'implémenter un
TableCellRenderer je ne pouvais pas surcharger le
DefaultTableCellRenderer associé à Boolean.class ...

Je ne sais pas où le trouver dans la javadoc...
--
yt

Avatar
jocelyn
Vu que tu dois afficher une checkbox et pas un label, je ne vois vraiment
pas pkoi tu insistes sur le
DefaultTableCellRenderer :)
Bon pour t'aider a voir ca, regarde dans le code de la JTable, tu y verras 2
choses qui t'interesseront:
1) la methode createDefaultRenderers() qui te montrera comment par defaut
sont affiches les booleens
2) le code de la classe BooleanRenderer, qu'il te suffira de modifier
legerement pour obtenir ce que tu veux

Alors tu me diras, "oui mais si Sun decide un jour de modifier l'apparence
de ses renderers je vais devoir
revoir tous les miens !"
Bah oui.... Malheureusement ils ont ecrit pas mal de code cradingue et guere
reutilisable pour tout ce qui
touche à la JTable, c comme ca...

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même
Avatar
yvon.thoravalNO-SPAM
jocelyn wrote:

je ne vois vraiment
pas pkoi tu insistes sur le
DefaultTableCellRenderer :)


parce que j'ai du mal comprendre ce qu'est "DefaultTableCellRenderer",
si c'est uniquement JLabel j'en veux pas, je pensait que c'était ce qui
gérait les TableCellRenderer en fonction du type...

Bon pour t'aider a voir ca, regarde dans le code de la JTable, tu y verras 2
choses qui t'interesseront:
1) la methode createDefaultRenderers() qui te montrera comment par defaut
sont affiches les booleens
2) le code de la classe BooleanRenderer, qu'il te suffira de modifier
legerement pour obtenir ce que tu veux
oui, c'est ce qui m'intéresse...

Alors tu me diras, "oui mais si Sun decide un jour de modifier l'apparence
de ses renderers je vais devoir
revoir tous les miens !"
Bah oui.... Malheureusement ils ont ecrit pas mal de code cradingue et guere
reutilisable pour tout ce qui
touche à la JTable, c comme ca...


c'est pas gai, j'utilise essentiellement des JTables...
--
yt

1 2