begin process at 2012 02 13 12:45:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

JavaBeans

 > 

probleme de JPanels


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme de JPanels

samedi 5 juin 2004 à 06:18:19 | probleme de JPanels

killians


Bonjour

Je suis en train de développer un jeu de stratégie en java pour un projet d'étude avec mon binôme.


Le but du jeu est de poser un maximum de pièces , de formes particulières, sur un plateau (une grille de 400 petits carres).Le jeu se joue à deux et chacun possède 42 pièces à placer, sachant qu'il y a des règles de placement. Les pièces sont composées de petits carrés qui vont se superposer à ceux du plateau après déplacement des pièces(ceci est nécessaire pour comptabiliser les scores des joueurs).


Pour coder ce jeu en java ( SWING) on a modélisé chaque petit carré par un JLabel. Chaque pièce est alors un JPanel qui contient un certain nombre de ces JLabels "collés" côte à côte. L'avantage est de pouvoir déplacer l'ensemble de la pièce avec la souris(on déplace le JPanel constituant la pièce).


Dans la même optique, on a modélisé le plateau par un JPanel qui contient 400 JLabels (petits carrés) "collés"côte à côte. (Oui l'idée est un peu originale....c'est ce que nous a dit notre tuteur).



C'est la que j'en viens à ma question.


On a remarqué que:

- si on crée d'abord les pièces puis le plateau , lorsque on déplace une pièce sur le plateau la pièce apparait sur le plateau


-si on déplace une pièce sur une pièce déja existante sur le plateau, la pièce déplacée va disparaitre derriere la piece présente sur le plateau.


-si on effectue une rotation sur la pièce que l'on veut poser sur le plateau et que l'on déplace la pièce obtenue sur le plateau, la pièce disparait derrière le plateau. A noter que la rotation porte uniquement sur la pièce : on obtient une nouvelle pièce qui possède les mêmes attributs que la précédente mais les petits carrés sont agencés d'une autre manière. En fait l'agencement des petits carrés de la pièces est géré par une matrice qui est interne au constructeur de pièces.



Conclusion: un JPanel créé avant d'autres JPanels sera toujours visible meme si on déplace un autre JPanel sur lui ou même si on le déplace sur un autre JPanel.


Nous avons essayé de trouver un algo pour modifier cette hiérarchie, mais ça ne marche pas et cela nous freine considérablement....



==> N'y aurait-t'il pas une méthode existante dans Java qui modifie cette hiérarchie et permette un controle de la visibilité d'un JPanel par rapport à d'autres qui lui sont superposés?


Ainsi on pourrait voir les pièces rotationnées sur le plateau après déplacement plutot que de les voir disparaitre derriere le plateau. On est sur de les avoir derriere notre plateau: un algo nous le montre.


Si qqn a déja eu ce probleme, ce serait bien qu'il nous dise comment il a résoulu le probleme(une méthode Java existante? Un algo?)


Je ne peux pas fournir de code car environ 1500 lignes de code seraient un peu longue à lire....


Je peux juste dire que l'on a une classe PetitCarré qui étends JLabel, une classe pièce et une classe plateau qui étends JPanel, pour assembler des petits carrés, une classe graphique qui étends JFrame et implémente ActionListener et enfin une classe principale dans laquelle les pièces et le plateau sont créés et qui gère les événements de souris.



Enfin peut-être que notre conception du système est un peu trop originale et ne convient pas....Mais cela nous ferait du mal de tout se retapper surout que la fin du projet approche...


Voila si vous avez pu arriver jusque la je vous remercie de votre patience. Et j'espère que vous pourrez apporter une solution à notre problème.


Merci d'avance.
mercredi 9 juin 2004 à 19:00:17 | Re : probleme de JPanels

PROMETHEE111


PROMETHEE
Bonjour, j'aimerai savoir qui contient qui : en effet, si le plateau contient les pièces, alors les pièces seront toujours au dessus du plateau. Je me doute que les cases du plateau sont contenues par celui-ci, mais je suppose que les pièces ne sont pas contenues par les cases, donc avec un algo on peut determiner quelles sont les cases recouvertes par une pièce, et les rendres transparentes.
Autre solution, Il y a peut être moyen de surcharger le panel contenant tout et sa méthode paint : via des clips, on doit pouvoir choisir les zones à repeindres et l'ordenancements (bien que cela ne soit pas sur...), au pire repeindre plusieurs fois les divers élements.
Peut tu nous dire qui possède qui ?

merci d'avence
mercredi 9 juin 2004 à 23:07:56 | Re : probleme de JPanels

killians


voila une capture d'écran:




en fait les pièces sont en dehors du plateau . Le plateau et les pièces sont dans un même JPanel.
Les pièces sont crées en premier puis le plateau est créé dans la méthode main.
Si on n'effectue aucune rotation sur les pièces pas de pbm mais après rotation, si on déplace les pièces, elles passent derrière le plateau lorsqu'on veut les mettre sur le plateau.
jeudi 10 juin 2004 à 00:50:29 | Re : probleme de JPanels

PROMETHEE111


PROMETHEE


voici un extrait de la doc java sur la classe JContainer :

A generic Abstract Window Toolkit(AWT) container object is a component that can contain other AWT components.

Components added to a container are tracked in a list. The order of the list will define the components' front-to-back stacking order within the container. If no index is specified when adding a component to a container, it will be added to the end of the list (and hence to the bottom of the stacking order).

Je pense que l'on peut en déduire que l'ordre dans lequel est peint la liste de composant contenue correpond à la liste gérer en interne par un vecteur :

0 pour front (devant), size()-1 pour back (derrière), ainsi, en supposant que pour tourner ta pièce tu la détruit et la reconstruit, il n'est pas étonnant que lorsque tu détruit et resonctruit un composant du conteneur, il se retrouve en dernier, donc derrière. Dans ce cas la solution est simple : prend l'indice du composant que tu souhaite détruire (la pièce), en sauvegardant cette indice lors de la construction, ou bien en faisant un getComponents et en comparant les élements du tableau jusqu'a ce que tu retrouve ta pièce, puis lorsque tu insère ta pièce tournée, tu la réinsère à cette indice, ou à l'indice 0 si tu te fiche de l'ordre d'affichage des pièces entre elles.

Pour inserer à un indice spécifique, c'est juste un JPanel.add(Component comp, int index).

Essaye cela, c'est interressant si cela marche.

@+
jeudi 10 juin 2004 à 02:18:19 | Re : probleme de JPanels

killians


je te remercie
je te dis si ça marche
jeudi 10 juin 2004 à 02:25:38 | Re : probleme de JPanels

killians


Je viens de rajouter un indice 0 lorsque on reconstruit la pièce et qu'on l'ajoute au JPanel.

et ça marche!!!!

Je te remercie....car on ne connaissait pas cette astuce.

On avait essayé avec un Layered Pane mais ça ne marchait pas...

à+


Cette discussion est classée dans : pièce, jpanel, pièces, plateau, déplace


Répondre à ce message

Sujets en rapport avec ce message

Jeu de stratégie [ par killians ] BonjourJe suis en train de développer un jeu de stratégie en java pour un projet d'étude avec mon binôme.Le but du jeu est de poser un maximum de pièc Problème JDesktopPane, JInternalFrame et JPanel [ par aurel16v ] Bonjour tout le monde!Je développe un JApplet dans lequel j'ai un JPanel et des JInternalFrame. Le problèmes, c'est que je n'arrive pas a gérer le red Mettre dynamiquement un JPanel au dessus d'un autre [ par babou6a ] Bonjour, Je cherche a recreer une sorte de bureau virtuel en java. J'ai crée une grande JWindow pour faire le bureau et je crée des JPanel (qui sont l Cacher les onglet [ par Bl4sT3R ] Voila mon problemejai un JtabbedPane dans lequel jai mis des Jpanel.or au demarage de mon code (il y a une application graphique) je le met a false le ajouter un JPanel à une JFrame [ par isimm06 ] Assèlèmou aleikoum ,Je n'arrive pas à affecter un JPanel à un autre Sachant qu'ils appartiennent à deux JFrames différentes .Comment je fais .Merci be Jpanel detection de fermeture [ par lkryss ] bonjour.voila je dispose de 2 classes C1 et C2, avec C1 j'affiche C2 mais en meme temps je rend invisible C1 (setvisible(false)) mon probleme est que echanger des Jpanel dans un BorderLayout [ par omcougar ] Bonjour,je pense avoir déjà vu la raponse à mon problème dans ces forums, mais je parviens plus à la retrouverdans un JFrame, je crée un border layout comment resoudre ce probleme d'affichage apres un clic sur un boutton [ par etudiag ] Voici le code source (programme en debut qui fait la resolution des problemes par la methode du simplexe) veuillez voir dans votre environnement et vo applet et JPanel [ par def95 ] bonjour,je voudrai juste savoir s'il est possible de d'integrer un JPanel à une applet java. si oui comment? [JPanel] Redimensionner le bord d'un panel avec la souris [ par cbil ] Bonjour tout le monde !J'ai un petit soucis avec mon application. J'aimerez pouvoir redimensionner un panel avec la souris.Explication : Dans ma JFram


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,692 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales