Echiquier en java avec un JTable

marlyo69 Messages postés 2 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 21 décembre 2010 - 20 déc. 2010 à 15:12
 Utilisateur anonyme - 21 déc. 2010 à 22:37
bonjour,
alors voila dans le cadre du développement d'un jeu d'échec en java, je réalise une interface graphique.
pour l'échiquier, j'ai opté (à tort) pour un jtable de 64 cases avec des cellrenderer qui modifient les cases.
alors le premier renderer met les cases en noir et blanc et met toutes les pieces au format png en position initiale.
en ce moment je suis entrain de tester le deplacement d'une piece, alors j'ai voulu faire un 2eme renderer qui place l'image de la case source dans la case destination, le probleme que je rencontre, c'est que le renderer modifie toute la colonne alors que moi je ne veux qu'il modifie que la case destination.
voici les codes sources :
1er renderer http://paste-it.net/public/b94507b/
2eme renderer http://paste-it.net/public/k940318/java/
fenetre http://paste-it.net/public/aa34830/

le probleme que j'ai vient de l'appel du deuxieme renderer par :
CelluleDeplacement d = new CelluleDeplacement(5,5);
jTable.getColumnModel().getColumn(5).setCellRenderer(d);
en mettant getcolumn(5) je le condamne en quelque sorte a travailler sur toute la colonne, donc auriez vous des solutions pour lui specifier une cellule en particulier?

3 réponses

Utilisateur anonyme
21 déc. 2010 à 15:24
Bonjour

Tu devrais utiliser un seul TableCellRenderer et lui transmettre les informations de rendu avec un accesseur en écriture. Ainsi, il répercuterait les changements sur chaque cellule et non par colonne comme la méthode getTableCellRendererComponent passe l'indice de la colonne et l'indice de la ligne. Bon courage.














TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
marlyo69 Messages postés 2 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 21 décembre 2010
21 déc. 2010 à 16:05
bonjour, merci pour la reponse
qu'entends tu par tablecellrenderer pck c'est une interface qui a une seule methode, a savoir
public Component getTableCellRendererComponent (JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int col), et c'est cette méthode que j'utilise
0
Utilisateur anonyme
21 déc. 2010 à 22:37
Tu utilises une instance de TableCellRenderer par colonne alors qu'il serait préférable d'utiliser une seule et unique instance de TableCellRenderer pour tout l'échiquier quitte à le munir d'un attribut qui contiendrait des informations sur ce qui doit être affiché. Dans la méthode getTableCellRendererComponent, tu peux déjà facilement savoir si une case doit être noire ou blanche en fonction de l'indice de ligne et de l'indice de colonne (en jouant sur les valeurs paires et impaires, je crois que si l'indice de ligne et l'indice de colonne ont la même parité la case est noire sinon l'inverse ou un truc de ce genre)

Tu pourrais utiliser un tableau d'énumérants pour indiquer quelles pièces se trouvent sur l'échiquier. Si une cellule du tableau est à null, ça veut dire qu'il n'y en a aucune :

enum Piece{Tour,Cavalier,/*tu connais la suite*/}

private Piece[][] piecesSurEchiquier;


Dans getTableCellRendererComponent, tu regardes la variable piecesSurEchiquier et en fonction de ce qu'elle contient, tu utilises l'image qui correspond à la pièce.

















TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
Rejoignez-nous