Pb #1 : Resolu -> Nouvelle QUESTION Pb #2 - Java - Programmation
Marsh Posté le 08-10-2002 à 22:45:21
et ben pour tout dire, tu es sur le bon chemin !
Pour dessiner il te faut un JPanel.
Comment dessiner dessus ?
Et ben il faut te faire un classe genre MonJpanel qui hérite de JPanel, et qui redéfinie la méthode paintComponent(Graphics g).
Après tu mets ce que tu veux dans cette méthode, et tu pourras bien sûr encapsuler dans cette classe les objets que tu dessineras par la suite, et les méthodes qui vont bien pour les manipuler ...
C'est pas très précis, mais bon tu trouveras facilement des exemples dans la literrature, voir http://penserenjava.free.fr et d'autres lien que tu trouveras dans la java FAQ de DarkLord (voir sa signature)
Marsh Posté le 08-10-2002 à 22:57:42
oula je crois que j'ai pas bien compris la
Je voit pas en fait comment faire pour qu'une suite de forme géometrique genre :
drawOval(50,50,300,300);
soit placé dans une endroit précis de la fenetre (ici un panel bien précis), c ca que je veut faire en fait
Marsh Posté le 08-10-2002 à 23:16:33
voilà un exemple (pas testé, pas fait de java2D depuis 1 mois) :
Code :
|
Bon alors, c'est carément pas optimisé et tout et tout, et les types sont peut-être pas les mieux adaptés, mais c'est pour donner une idée (en espérant qu'elle ne soit pas fausse )
Bon allez a+
Marsh Posté le 08-10-2002 à 23:21:33
casquetta a écrit a écrit : oula je crois que j'ai pas bien compris la Je voit pas en fait comment faire pour qu'une suite de forme géometrique genre : drawOval(50,50,300,300); soit placé dans une endroit précis de la fenetre (ici un panel bien précis), c ca que je veut faire en fait |
ben en fait, jette un coup d'oeuil sur l'exemple que j'ai mis, j'espère que tu comprendras ...
drawOval(x,y,w,h), c'est une méthode de l'AWT ça ... utilise plutôt les nouvelles fonctionnalités de Java2D (SWING), c'est plus puissant et plus bo
sinon en utilisant cette fonction et ben, on peut imaginer que la class MonPanel contienne quatre champ : x, y, w, h qui sont mis à jour lorsque tu cliques sur un de tes boutons (sans oublier un chti repaint()), et donc l'appel drawOval(x,y,w,h) aura un effet dynamique. De toutes manières c'est jamais bon de mettre des valeurs en dur, encore moins dans un appel de fonction ...
Marsh Posté le 08-10-2002 à 23:24:18
mais le probleme c que on doit imperativement utilisé AWT et non pas JAVA2D
et quand je parle de PANEL c bien :
Panel p = new Panel();
je veut pouvoir utilisé les objet dra<Oval, drawRectangle(à etc... et les placer ou je veut
cependant je sais pas comment faire pour les placer et ou les crée dans la classe
Marsh Posté le 08-10-2002 à 23:31:37
Mais je comprend pas meme dans ton exemple
ou est ce que le code va dire que l'objet graphique GRAPHICS va se placé a lendroit voulu en fait
Marsh Posté le 08-10-2002 à 23:41:02
et ben c'est quasimodo la même chose en fait :
Code :
|
voilà, avec ça, tu instancies un MonPanel de la taille que tu veux, et tu associes un clic sur un bouton à un appel moveXXX()
...
bon allez je suis fatigué, bonne nuit !
Marsh Posté le 09-10-2002 à 00:41:06
En AWT, le plus simple pour dessiner est de créer des sous-classes de Canvas, en fait....J'ai pas de code sous la main, là, mais on peut écrire des choses tout à fait très jolies, avec ça...Je te montre du code et des screenshots demain....si j'y pense!
Marsh Posté le 09-10-2002 à 00:55:30
gfive a écrit a écrit : En AWT, le plus simple pour dessiner est de créer des sous-classes de Canvas, en fait....J'ai pas de code sous la main, là, mais on peut écrire des choses tout à fait très jolies, avec ça...Je te montre du code et des screenshots demain....si j'y pense! |
ca commence a faire beaucoup pour demain
Marsh Posté le 09-10-2002 à 11:39:50
Chaque chose en son temps!!
Bon, j'ai un truc qui tourne, avec de l'AWT et tout, pout la démo de comment donc on dessine!!!
Ca ressemble à ça :
A downloader là :
http://site.voila.fr/gfive/Draw.tgz
Ah, oups, pour le lancer : dézipper, se mettre dans le rep. draw/class créé, puis faire :
java Demo [width] [height]
(largeur et hauteur du machin)
ouala. Enjoy without moderation et tout.
Bon, c'est un peu peaufiné, mais je suis perfectionniste!
Marsh Posté le 09-10-2002 à 12:17:08
ouais en fait, j'y connais rien en AWT
hallala ... belle époque révolue
Marsh Posté le 09-10-2002 à 12:19:50
Pas révolue!! quand tu veux faire des appets, tu peux pas demander au client final de télécharger le plugin Java2...
Marsh Posté le 09-10-2002 à 12:48:05
putain ca fou les nerfs la je comprend carrement pas le concept la pour ajouter des formes
encore le truc du add(button) c super simple autant pour ajouter un graphics a un endroit voulu la je comprend pas du tout
ya pas quelqu'un qui pourrais mexplqieru en francais comment ca fonctionnne ce truc
jai lut ta source de ton programme c ce que je voudrais avoir mais la je capte pas comment ta fait
voila voila
Marsh Posté le 09-10-2002 à 15:27:01
ok bon jy suis arrivé a peu pres mais la un nouveau probleme se pose :
dans ma procedure paint j'ai mis directement la creation des objet la voici :
Code :
|
Code :
|
Et maintenant j'aimerais que lorsque l'on clique sur un bouton ce ne soit plus un OVAL que j'affiche mais un reactangle par exemple ouu autre chose.
vous avez une idée ??
merci ;-)
Marsh Posté le 09-10-2002 à 15:37:08
casquetta a écrit a écrit :
|
c'est quoi cette hérésie ? paint() est pas censé être appelé automatiquement ?
Marsh Posté le 09-10-2002 à 15:39:43
désolé cetais un truc que j'ai laissé un vieux trucs que jessayais, mais je lai pas mis dans mon prog
voila donc tu saurais pas comment je peut faire ?
Marsh Posté le 09-10-2002 à 15:44:26
casquetta a écrit a écrit : désolé cetais un truc que j'ai laissé un vieux trucs que jessayais, mais je lai pas mis dans mon prog voila donc tu saurais pas comment je peut faire ? |
ben si j'ai bien compris c'est tout con
Code :
|
Et quand tu clique sur un bouton, tu appelles setShape() et repaint().
Marsh Posté le 09-10-2002 à 15:53:09
je sais pas si c moi
mais la je vois pas comment le placer le bout de code
jai tout essayé et ca marche pas, ca menerve, je comprend pas comment fonctionne ces methodes de graphisme !!
Marsh Posté le 09-10-2002 à 15:55:22
casquetta a écrit a écrit : je sais pas si c moi mais la je vois pas comment le placer le bout de code jai tout essayé et ca marche pas, ca menerve, je comprend pas comment fonctionne ces methodes de graphisme !! |
ben ton machin avec l'ovale marche ? parce que tout ce que t'as a faire c'est modifier paint() pour qu'il dessine un ovale sous certaines condititions et un rectangle sous d'autres().. Je comprends pas trop ton probleme en fait.
Marsh Posté le 09-10-2002 à 15:58:35
bah le truc c que mon prog affichant un cercle marche parfaitement
maitenant je veut juste qu'il change la forme en cliquant sur un bouton alors je met un gestionaire devenement :
Code :
|
mais je sais pas quoi mettre dans la méthode pour faire ce que je veut
je voudrais par eexemple juste changé la couleur alors que faut t'il mettre dedans ?
et dans la méthode paint ?
Marsh Posté le 09-10-2002 à 16:01:38
Bon, donc tu as un objet qu'on va appeler "forme" qui redéfinit la méthode paint. A coté tu as une frame avec des boutons. Cette frame contient "forme". Lors du clic sur un bouton tu appelles une methode de "forme" (dans mon exemple, setShape) de maniere a ce que celui-ci change d'etat. Apres le changement d'état tu demandes a "forme" de se rafraichir via repaint (mais tu peux aussi mettre le repaint dans setShape pour etre peinard). C'est plus clair ?
Marsh Posté le 09-10-2002 à 16:06:38
bah ouais jcomprend la
mais le probleme c que quand jai mis ton bout de code il me disais
cannot resolve symbol : setShape
jai pas compris
cest chiant grave la
Marsh Posté le 09-10-2002 à 16:08:16
casquetta a écrit a écrit : bah ouais jcomprend la mais le probleme c que quand jai mis ton bout de code il me disais cannot resolve symbol : setShape |
montre voir le code de la classe qui implémente paint()
Marsh Posté le 09-10-2002 à 16:14:25
remonte dans le topic vers le milieu jai collé tout mon code actuel
en 2 fichier : Parle.java et EssaiCanvas.java
Marsh Posté le 09-10-2002 à 17:20:09
gfive a écrit a écrit : Pas révolue!! quand tu veux faire des appets, tu peux pas demander au client final de télécharger le plugin Java2... |
ok ok, mais je fais pas des trucs à distribuer c pour ça !
Marsh Posté le 09-10-2002 à 17:21:00
casquetta a écrit a écrit : remonte dans le topic vers le milieu jai collé tout mon code actuel en 2 fichier : Parle.java et EssaiCanvas.java |
je parlais du source modifié pour prendre en compte plusieurs formes...
Marsh Posté le 09-10-2002 à 17:27:09
Si tu prends un bouquin à la rubrique gestion d'événements et que tu lis bien les exemples, tu comprendras assez vite comment ça marche .. paske là à part te pondre le code ... bon courage à toi
Marsh Posté le 09-10-2002 à 18:57:03
bah franchement vu le prix que coute un livre comme ca jpense pas en acheté
bah franchement si tu pouvais me doner la portion de code je letudierais parceque j'ai fait trop de recherche sur le net et je sais que je suis pas loin de ce que je veut mais jarrive pas a trouvé ou est le TRUC
merci
Marsh Posté le 09-10-2002 à 18:59:28
casquetta a écrit a écrit : bah franchement vu le prix que coute un livre comme ca jpense pas en acheté |
http://penserenjava.free.fr/pens/indexMain_14&0.htm
Marsh Posté le 09-10-2002 à 20:12:03
bon voila ou jen suis, ca ne marche pas cause que le compilateur dit ne pas trouvé la fonction setShape(int)
Fichier Parle.Java
Code :
|
fichier EssaiCavans.java
Code :
|
voila il ne trouve pas setShape surement puisqu'elle est dans une classe différente, enfin jsais pas
Marsh Posté le 09-10-2002 à 20:19:51
ben voila, ca avance !
C'est effectivement une méthode d'un autre objet, il faut donc l'appliquer a cet objet (tout comme repaint) ce qui dans ton cas donne
c.setShape(...);
c.repaint();
Sinon sans moquerie, tu as déja programmé dans d'autres langages ? Tu sais ce que c'est de la programmation objet ? Parce que serieusement, c'est vrai que les bouquins d'infos sont chers, mais la tu en as sacrément besoin.
Marsh Posté le 09-10-2002 à 20:21:36
ah, et si on définit des constantes publiques, c'est pour les utiliser. Donc dans setShape au lieu de passer 2, tu peux passer EssaiCanvas.RECT
Marsh Posté le 09-10-2002 à 20:23:11
ouais c'est bon, là tu y es presque ... tu te débrouilles, mais c'est clair que ça reste de la cuisine, il faudrait que tu te fasse un topo sur la programmation orientée objet, à partir de là, je pense que tu pourras faire un tas de choses super interressante ...
au fait, tu es étudiant ? en quoi ? (juste pour savoir)
Marsh Posté le 09-10-2002 à 20:26:44
ouais jme debourouille carrement pas mal en objet normallement C++ et JAVA mais la ca me deroute trop les interfaces...jsais pas pkoi d'ailleurs
mais ca ne resoud pas le probleme car c la methode setShape que le compilateur ne trouve pas...
Marsh Posté le 09-10-2002 à 20:34:33
casquetta a écrit a écrit : ouais jme debourouille carrement pas mal en objet normallement C++ et JAVA mais la ca me deroute trop les interfaces...jsais pas pkoi d'ailleurs mais ca ne resoud pas le probleme car c la methode setShape que le compilateur ne trouve pas... |
heu ...
setShape(), c'est la méthode d'un objet que t'as créé ... ok ?
comment t'appelles la méthode d'un objet .... comme ça le compilo, il devine tout seul sur quel objet il doit appliquer la méthode ?
non, hein ! Imagines que tu ais maintenant deux canevas c1 et c2, et que suivant le boutons sur le quel t'appuies tu veux veuilles agir sur c1 ou c2 ... comment tu fais ?
Et ben tu appelleras ta méthode setShape(), ou n'importe quelle autre d'aillueurs) sur l'objet concerné ... donc ici, il faut l'appliquer sur ton objet "c" (ce que loriil t'as déjà fait remarqué)
Après si tu te balades en Objet ...
Marsh Posté le 09-10-2002 à 20:38:00
bobuse a écrit a écrit : heu ... setShape(), c'est la méthode d'un objet que t'as créé ... ok ? comment t'appelles la méthode d'un objet .... comme ça le compilo, il devine tout seul sur quel objet il doit appliquer la méthode ? non, hein ! Imagines que tu ais maintenant deux canevas c1 et c2, et que suivant le boutons sur le quel t'appuies tu veux veuilles agir sur c1 ou c2 ... comment tu fais ? Et ben tu appelleras ta méthode setShape(), ou n'importe quelle autre d'aillueurs) sur l'objet concerné ... donc ici, il faut l'appliquer sur ton objet "c" (ce que loriil t'as déjà fait remarqué) Après si tu te balades en Objet ... |
je sais lerreur que ma dit lorill etait une grosse erreur que j'ai faite par inatention, mais la je l'ai corrigé et ca ne change rien au probleme le compilo ne daigne pas trouvé la méthode setShape de la class EssaiCanvas
ps : jai pas dit que je me ballade jai dit que je me debrouille
Marsh Posté le 09-10-2002 à 20:42:32
ben c'est que t'as pas corrigé correctement
edite ton message précedent avec les corrections qu'on y jette un oeil
Marsh Posté le 09-10-2002 à 20:46:21
casquetta a écrit a écrit : le compilo ne daigne pas trouvé la méthode setShape de la class EssaiCanvas |
Ce qui est tout à fait normal puisqu'il n'y a pas d'objet EssaiCanvas dans Parle.
Marsh Posté le 09-10-2002 à 20:50:47
ah, suis-je bête... Evidement.
c est déclaré dans Parle, et tu essaye d'y accéder dans une classe interne qui ne le connait pas
Marsh Posté le 08-10-2002 à 22:13:17
Voila j'ai un petit programme qui se décompose ainsi :
Je crée un premier panel p comme ceci :
Puis un second
et je voudrais mettre dans le second du graphisme par exemple un cercle etc...
comment faire ??
en fait je voudrais faire une interface simple avec
En HAUT = Bouton de commande
EN BAS = Forme qui change quand on clique sur les boutons
merci ;-)
Message édité par casquetta le 13-10-2002 à 16:26:57