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

  FORUM HardWare.fr
  Programmation

  [java] Questions de debutant...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] Questions de debutant...

n°99920
djoul
Posté le 13-02-2002 à 14:55:21  profilanswer
 

D'un coté, j'ai un objet Image nommé plateau qui ne demande qu'a etre affiché, de l'autre coté un BorderLayout.CENTER qui ne demande qu'a etre rempli, comment concilier les 2 ?
 
Comment, ensuite, definir des zones dans cette image (qui seront selectionné a la souris)
 
mârci

mood
Publicité
Posté le 13-02-2002 à 14:55:21  profilanswer
 

n°100001
djoul
Posté le 13-02-2002 à 16:42:40  profilanswer
 

up

n°100039
gfive
Posté le 13-02-2002 à 17:55:18  profilanswer
 

c'est pas aussi simple...Le Layout ne demande pas à être rempli, d'abord, c'est un Component qu'on remplit, le Layout ne fait que dire au Component comment ranger tes éléments graphiques.
 
Pour afficher une image, et rendre des zones 'actives' il va te falloir bosser un peu plus : dessiner l'image sur un objet (un JPanel ou un Canvas voir la doc), et ensuite gérer les évènements de souris : quand tu as un click, tu récupère les coordonnées du pointeur, et tu agis en fonction....
 
Ouala!!
 
(bon, y'a peut être plus simple, mais ça fait une éternité que je suis obligé de me contenter de l'AWT (applet oblige) alors c'est une solution AWT)

n°100167
djoul
Posté le 14-02-2002 à 10:13:23  profilanswer
 

J'ai avancé un peu : effectivement, je suis passé par un Canvas (et même un objet Graphics...). En gros, et de tete (suis au boulot...) (g Graphics, ip Image, plateau Canvas, principal Container):
 
g.drawImage(ip, 0, 0, null);
plateau.paint(g);
principal.add( plateau, BorderLayout.CENTER);
 
ca compile, mais ca ne s'affiche pas. Est ce un probleme de rafraichissement, ma methode n'est pas bonne ?

n°100176
archangel
Un homme Une vision
Posté le 14-02-2002 à 10:29:01  profilanswer
 

Effectivement ta méthode n'est pas celle que j'aurais utilisé.
 
Il faut que tu fasses un truc du style suivant (attention ça fait longtemps que j'ai pas pratiqué il peut y avoir des erreurs)
 

Code :
  1. class MonPlateau extends Canvas
  2. {
  3.    public void paint(Graphics g)
  4.    {
  5.       // tu dessines ton images
  6.       g.drawImage(ip, 0, 0, null);
  7.    }
  8. }
  9. Puis tu fais
  10. principal.add(instanceDeMonPlateau,BorderLayout.CENTER);


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
n°100181
djoul
Posté le 14-02-2002 à 10:35:15  profilanswer
 

ok merci, j'vais essayé ca ce midi. Mais qu'est ce qui ne va pas dans ma methode ?

n°100191
archangel
Un homme Une vision
Posté le 14-02-2002 à 10:47:31  profilanswer
 

djoul a écrit a écrit :

ok merci, j'vais essayé ca ce midi. Mais qu'est ce qui ne va pas dans ma methode ?  




 
Lorsque tu appelle la méthode drawimage() de g il va dessinner ton image dans g.
 
Puis lorsque tu appelles la méthode paint() en lui passant g il faut savoir que paint ne fait rien, de plus je suis pas sur que le g que tu lui passe corresponde bien à une écran.
 
Car en fait à chaque fois que la zone d'écran doit être dessiner, ton application ou applet appelle la méthode paint en lui passant un objet Graphics qui correspond à la zone d'écran. Il faut donc redéfinir cette méthode pour dire ce qu'on veut dessiner.
 
Voilà
@+


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
n°100199
gfive
Posté le 14-02-2002 à 11:00:25  profilanswer
 

Exact, Archangel!! :) C'est comme ça qu'ont crée des composants complexes en AWT!! :D:D Et mine de rien, l'AWT, même si c'est prise de tête, c'est achtement puissant.

n°100201
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 14-02-2002 à 11:15:17  profilanswer
 

question,
 
j'ai une image représentant, par exemple, une skin winamp
(start, stop, pause, next, previous)
 
Quelqu'un peut me donner un lien m'expliquant clairement et facilement comment gérer les events de la souris pour que lorsque l'utilisateur clicke sur une zone de l'image je sache déterminer ou c'est histoire de savoir ce qu'il veut faire?
 
Euh c'est clair ? :)


---------------
What is popular is not always right, what is right is not always popular :D
n°100212
gfive
Posté le 14-02-2002 à 11:19:19  profilanswer
 

Bah....le plus simple, à mon sens, pour pas te faire chier, c'est de créer une classe ImageButton (si tu es en AWT, sinon, en Swing, ça existe, mais je me souviens plus le nom), qui fonctionne comme un bouton, et qui met ton image dessus, sans bordures ni rien, comme ça, t'as pas à te faire chier avec des gestions de cooredonnées....
 
J'avais fait ça à un moment en Swing et en AWT, avec aussi des objets Border me permettant de 'coller' des images autour de n'importe quel composant.....Bon, on se fait un peu chier pour découper les images à coups de Gimp ou Photoshop au début, mais le résultat était sympa : l'interface ne laissait apparaîrte aucun élément Swing ou AWT, en dehors des JTable et des JTextArea....
 
'le coup des bordures, je l'ai aussi porté en AWT? mais c un peu plus galère à utiliser)

mood
Publicité
Posté le 14-02-2002 à 11:19:19  profilanswer
 

n°100220
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 14-02-2002 à 11:24:37  profilanswer
 

gfive, merci pour ta réponse.
 
J'ai déjà utiliser cette méthode pour mon applet mais on a des problèmes sous Linux. Les coordonées sont foireuses et les images ne sont pas du tout correctes (il manque plein de partie).
 
Bref, c'est le caca et je me disais que travailler avec une image serait plus propre. Mais bon clair que je suis pas motivé à jouer avec les coordonées.
 
Sinon j'ai un JSlider dans mon applet et lorsque l'utilisateur essaie de modifier la valeur, JRE se crashe avec un AccessException (sous linux uniquement, no prob sous win)
 
Comprends pas...


---------------
What is popular is not always right, what is right is not always popular :D
n°100234
gfive
Posté le 14-02-2002 à 11:39:08  profilanswer
 

Comment tu charges tes images?? Tu utilises un MediaTracker?? Pasque sinon, il arrive qu'il les affiche avant qu'elles ne soient complètement chargées...Sinon, pour le slider....A sait pôs!

n°100257
Rawhead re​x
Argghhhhh
Posté le 14-02-2002 à 12:16:42  profilanswer
 

Bon ca remonte a sacrement longtemps mais tu peut te debrouiller pour afficher l'image quand elle a finie d'etre chargee, en utilisant une bufferisation dans une variable image et ensuite faire un draw de la variable.
Avec ca t'as un moyen de controler si l'image a finit d'etre chargee, mais je sais plus exactement comment(arghh on oublie tout :().

n°100573
gfive
Posté le 14-02-2002 à 22:02:31  profilanswer
 

Bah, l'objet ImageObserver (enfin, l'interface, plutôt) permet d'avoir des évènements sur les images en train de se charger...Mais ça m'étonne, ton problème : avec le MediaTracker, ça marche nickel, même en téléchargeant les images sur le réseau...


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

  [java] Questions de debutant...

 

Sujets relatifs
[JAVA] BufferedReader[JAVA] System Tray
[JAVA] Pb de calendrier[Java] adresse IP
[JAVA] Un soft pour creer un Jar avec seulement les classes utiles ?[Java] problème d'accents
[ JAVA ] récupérer un evenement sur une fenetre.java to .exe
[Java ] - RMI et les MAJ d'objets[Java] Simuler l'interaction
Plus de sujets relatifs à : [java] Questions de debutant...


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