Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [jPanel]graphique ... c la misère...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[jPanel]graphique ... c la misère...

n°343177
spitagor
Posté le 25-03-2003 à 22:08:14  profilanswer
 

Bon c un peu compliké ce que je vais dire donc je vais essayer de pas m'emmeler les pinceaux...
 
j'ai un jPanel dans lekel se trouvent des objets graphiques (carrés en couleur enfin peu importe...)
 
un autre qui se construit en fonction de parametres
 
celui ci c'est une ligne de taille fixe sur l'ecran mais qui represente une route  dont on peut faire varier la longueur
en bref quand j'ai renseigné le parametre je veux que le jPanel se mette a jour avec les valeurs de debut et de fin de la "route" : exemple si je mets une longueur de route de 500
 
j'aurais :  
----------------------------------------
|       |       |      |       |       |
0      100     200    300     400     500
 
avec 100 j'aurais :  
----------------------------------------
|       |       |      |       |       |
0       10     20      30     40      50   metres
 
 
+ encore d'autres composants (rectangles) qui viennent se greffer a la "route"  a un rang  precis de la route en fait a un indice (modelisée par un tablo[] de char)
 
quand je veux reinitialiser mon jPanel je  veux en fait enlever mes rectangles ainsi que les labels caracterisant la longueur de la route... il faut utiliser la methode repaint()?
 
de plus je n'ai pas torp d'idée en ce qui concerne l'aspect"dynamique" de la creation de la ligne en fonction du paramètre donné...
 
enfin bref je comprendrais si vs ne repondez pas car moi meme g du mal mais bon ca me fait du bien d'essayer de l'expliker comme ca je comprends mieux
 

mood
Publicité
Posté le 25-03-2003 à 22:08:14  profilanswer
 

n°343403
bobuse
Posté le 26-03-2003 à 09:31:01  profilanswer
 


----------------------------------------
|       |       |      |       |       |
0      100     200    300     400     500
 
avec 100 j'aurais :  
----------------------------------------
|       |       |      |       |       |
0       10     20      30     40      50   metres

 
(en fixed c'est mieux), c'est peut-etre plutot 50 que 100 dans le 2eme non ?
 
Bon peu importe, moi j'ai a peu près rien compris, mais si ca peut t'aider :
 http://forum.hardware.fr/forum2.ph [...] subcat=390


---------------
get amaroK plugin
n°344393
spitagor
Posté le 26-03-2003 à 19:52:46  profilanswer
 

c sympa de me donner un lien vers un topic ke j'ai crée !!!
 
 :lol:

n°344565
deltaden
Posté le 26-03-2003 à 23:02:31  profilanswer
 

le repaint() sert juste à forcer le panel à se redessiner plus redessiner tous les components qu'il contient. Pour enlever tout ce qu'il contient tu fais un removeAll()  (il y a moyen de le faire compo par compo avec remove(Component) )
 
Pour dessiner ta route, je dirais que tu dois redéfinir la méthode paint du JPanel pour qu'elle fasse le dessin en fonction des paramètres. Tu mes donc ces paramètres en variables d'instance. Dès que l'utilisateur change un paramètre, tu fais un repaint() et le JPanel s'adapte automatiquement. Mais ca, ca marche pour dessiner juste la ligne dans ton JPanel, tu as aussi des objets à placer dessus ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°344697
spitagor
Posté le 27-03-2003 à 00:34:08  profilanswer
 

bon en fait quand je clique sur le bouton je recupere la position de l'objet a créer dans un textfield puis via un getGraphics sur mon jPanel je dessine trankilou mon objet
 
 
et pour tout virer j'ai juste a faire un repaint et ca me laisse juste la route  et ca me vire touts les objets qui sont crées par l'ultisateurs donc qui peuvent changer de place...
 
maintenant je me mets a l'animation... ca va chauffer
 

n°344703
deltaden
Posté le 27-03-2003 à 00:39:49  profilanswer
 

mmh, attention, la méthod repaint est appelée aussi par le système.
Donc les objets créés par l'utilisateur seront effacés si la méthode est appelée sans que ce soit toi qui le veuille, c'est ca que tu veux faire ? (test quand tu resize la fenêtre ou que tu la minimise et maximise)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°344727
spitagor
Posté le 27-03-2003 à 01:59:58  profilanswer
 

a bon elle est appelée quand par le systeme?
 
je croyais qu'on la controlait :??:  
 
 
en tout cas ca marche j'ai un bouton reinitialiser qui m'enleve mes objets graphiques par contre ils sont toujours presents au niveau objet donc comment je fais pour les detruire "a la main"?
j'ai entendu parler d'une methode destroy  

Code :
  1. if(s!=null)
  2. s.destroy();


 
mais ca marche pas...

n°344728
spitagor
Posté le 27-03-2003 à 02:03:53  profilanswer
 

argh effectivement tu as raison  quand je maximise et que je minimise ca me nike mes objets graphiques!!!!
 
 
alalala ca m'embete ca....euh comment on fait pour empecher la minimisation (je sais c mal :ange: )
 
mais sinon deltaden comment faire pour ajouter des graphiques a un jPanel sans passer par sa methode initiale (paintComponent)
 
stp aide moi!!!

n°344729
deltaden
Posté le 27-03-2003 à 02:24:16  profilanswer
 

spitagor a écrit :


alalala ca m'embete ca....euh comment on fait pour empecher la minimisation (je sais c mal :ange: )


ce serait trop facile...
en plus repaint() est même appelée quand tu passe une autre fenêtre devant celle de ton programme...

spitagor a écrit :


mais sinon deltaden comment faire pour ajouter des graphiques a un jPanel sans passer par sa methode initiale (paintComponent)


pour pouvoir dessiner "à la volée", tu fais jpanel.getGraphics() et ca te renvoit l'objet Graphics sur lequel dessiner.
 
et pour la destruction des objets, c'est pas nécessaire; une fois que des objets ne sont plus pointés par une variable (=>ils sont devenus inaccessibles), il y a le Garbage Collector qui s'occupe de le détruire et libérer la mémoire.
 
mais pour le reste, explique un peu plus ce que tu fais, avec les données de l'utilisateur, tu rajoute des objets Rectangle, Line2D... ou tu fais juste un graphic.drawRect(...) ?  
Et l'utilisateur, il peut rajouter autant d'objets qu'il veut ou seulement un nombre limité ?


Message édité par deltaden le 27-03-2003 à 02:37:51

---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°344745
spitagor
Posté le 27-03-2003 à 07:52:18  profilanswer
 

il peut en rajouter 4 au maximum et je fais un simple drawRect +un drawLine ainsi qu'un drawString c tout
 
 
 
et puis pour la destruction je sais qu'il y a le garbage collector  mais je voulais le supprimer manuellement
 
 
et puis j'ai un pb :
 
quand l'utilisateur clik sur un bouton ca me créee un nouvel objet Machine()
 
 

Code :
  1. btajoutermachineactionperformed(...)
  2. {
  3.                Machine m=new Machine(tabcaralea,pos);
  4.            
  5.                nbmachine++;
  6. //dessin de la machine  
  7. drawRect, draw line etc...
  8. }


 
 
mais aprres sacahnt que je veux acceder a une machine specifique je fais comment?Dans ma classe machine ya un attribut numéro.
 
comment acceder a la machine 1, 2 3 ou 4?

mood
Publicité
Posté le 27-03-2003 à 07:52:18  profilanswer
 

n°344899
deltaden
Posté le 27-03-2003 à 10:32:11  profilanswer
 

pour supprimer manuellement, il n'y a pas vraiment moyen,  
en java, c'est le GC qui s'en occupe.
 
Bon, apparement, la position où dessiner ta machine est enregistrée dans la machine non?
Le plus simple est de mettre tes machines dans un tableau défini en variable d'instance.  Tu as donc:

Code :
  1. Machine[] tabMachine = new Machine[4];
  2. boolean drawMachine;
  3. ....
  4. btAjouterMachineActionPerformed(...)
  5. {
  6. tabMachine[nbMachine]=new Machine(tabcaralea,pos);         
  7. nbMachine++;
  8. repaint();
  9. }
  10. ...
  11. paint(Graphics g){
  12. //tracage route:
  13. drawLine()
  14. ...
  15. //tracage machine
  16. if (drawMachine)
  17. for (int i =0; i < nbMachine; i++)
  18. {
  19. drawLine(...
  20. }
  21. }


et tu modifie le drawMachine en fonction de ce que tu veux faire


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [jPanel]graphique ... c la misère...

 

Sujets relatifs
faire un drawLine dans un JpanelJe cherche un assistant graphique qui génère du PHP .
[MFC VC6] Controle de rendu graphiqueComment ajouter une zone graphique a une frame swing?
Dessiner un graphique ss applet Java et ss phpJPanel + TitledBorder : update du txt / bckgrnd color (1 tomic 2 en 1)
Je cherche des info pour creer un moteur graphique 3D iso[C] affichage du contenu d'un variable en graphique ...
Un IDE alternatif à JBuilder qui génère une Interface Graphique ?Graphique en ASP
Plus de sujets relatifs à : [jPanel]graphique ... c la misère...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR