graphique ... c la misère... [jPanel] - Java - Programmation
Marsh Posté le 26-03-2003 à 09:31:01
|
(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
Marsh Posté le 26-03-2003 à 19:52:46
c sympa de me donner un lien vers un topic ke j'ai crée !!!
Marsh Posté le 26-03-2003 à 23:02:31
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 ?
Marsh Posté le 27-03-2003 à 00:34:08
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
Marsh Posté le 27-03-2003 à 00:39:49
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)
Marsh Posté le 27-03-2003 à 01:59:58
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 :
|
mais ca marche pas...
Marsh Posté le 27-03-2003 à 02:03:53
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 )
mais sinon deltaden comment faire pour ajouter des graphiques a un jPanel sans passer par sa methode initiale (paintComponent)
stp aide moi!!!
Marsh Posté le 27-03-2003 à 02:24:16
spitagor a écrit : |
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 : |
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é ?
Marsh Posté le 27-03-2003 à 07:52:18
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 :
|
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?
Marsh Posté le 27-03-2003 à 10:32:11
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 :
|
et tu modifie le drawMachine en fonction de ce que tu veux faire
Marsh Posté le 25-03-2003 à 22:08:14
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