Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006
-
23 févr. 2006 à 03:26
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006
-
24 févr. 2006 à 21:51
Bonjour a tous, voila dans le cadre d'un projet scolaire je dois réaliser une Applet possédant des boutons devant posséder des images. Je me suis donc natrellement tourner vers swing. J'essaie donc pour l'instant de faire une Applet (JApplet pour le coup ...) qui affiche un background et des élements sur ce dernier. Et c'est la que le probleme se pose. Quand j'affiche l'image et qu'ensuite je pose mais bouton, ceux ci n'apparaissent que je les survole dans la page ! (embetant n'est ce pas ?). J'ai cherché partout mais je n'ai pas trouvé ... J'ai trouvé un code de JFrame sur ce site mais sans arriver a le transcrire en Applet. Je me tourne donc vers vous .
Je met le code qui pour l'instant me pose probleme :
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 23 févr. 2006 à 11:04
Salut,
essai plutot la methode paintComponent(Graphics g)
enfait si tu veux JApplet herite de JPanel et sur un JPanel (ou
composant swing (à l'exception de JFrame)) il ne faut pas dessiner dans
la methode paint....
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 24 févr. 2006 à 10:29
Salut,
bon je viens de modifier certaine choses de ton appli et adapter les chemins à mon pc
la plus grosse de tes erreurs reste le ratachement des composant a ton
panel dans la methode paintXXX il ne faut pas faire ca bon ba bonne
lecture ....
Je tourne sous eclipse donc je te file mon script ant pour le jar et vu
que je suis dans un bon jour je te file aussi le fichier html :
Applet.java :
import javax.swing.JApplet;
public class Applet extends JApplet{
public void init(){
getContentPane().add(new Application(this));
}
}
=======================================
Application.java :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Application extends JPanel implements ActionListener{
maintenant pour corser un peu la chose et rendre le dessin plus beau si
tu dessine des ellipses et un bonus si tu veux mettre un thread et
eviter les clignotements :)
public class Application extends JPanel implements ActionListener{
................
//-------- tu creer un vecteur de rectangle en global
private Vector<Rectangle> vecRectangle = new Vector<Rectangle>();
private Image offscreen = null;
public Application(Applet app){
................
}
//--------dans ta methode paint tu redessine les rectangles
//-------- tu active l'anti aliasing
//-------- et tu dessine dans un buffer d'image
//-------- en effet en java on ne dessine pas dans une image mais dans un buffer d'imge
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 23 févr. 2006 à 13:42
Je viens de tester ta méthode Twinuts mais maintenant j'ai effectivement le bouton présent dans le lancement de l'applet, mais je n'ai plus le background :(
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 23 févr. 2006 à 14:40
Ahhh c'est bon ! Je viens de réussir l'affichage des 2 élèments via le paintComponent(). Mais désormais un autre problème se pose : j'aimerais pouvoir mettre des images sur mes boutons. J'utilise donc cette méthode :
bMarron = new JButton (new ImageIcon("marron.jpg"));
Sous appletviewer je n'ai aucun problème ... mais quand j'utilise un navigateur, il y a un problème de sécurité (il me dit que l'image ne peut pas être lu).
J'ai parcouru un peu les forum et apparemment il faudrait signer l'applet. J'ai bien tenté de regarder la documentation Sun mais c'est du charabia :(
Si quelqu'un pouvait m'aider :) Merci bien !
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 23 févr. 2006 à 14:40
Ahhh c'est bon ! Je viens de réussir l'affichage des 2 élèments via le paintComponent(). Mais désormais un autre problème se pose : j'aimerais pouvoir mettre des images sur mes boutons. J'utilise donc cette méthode :
bMarron = new JButton (new ImageIcon("marron.jpg"));
Sous appletviewer je n'ai aucun problème ... mais quand j'utilise un navigateur, il y a un problème de sécurité (il me dit que l'image ne peut pas être lu).
J'ai parcouru un peu les forum et apparemment il faudrait signer l'applet. J'ai bien tenté de regarder la documentation Sun mais c'est du charabia :(
Si quelqu'un pouvait m'aider :) Merci bien !
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 23 févr. 2006 à 16:58
Salut,
tu as plusieurs methodes pour lire un fichier sur ton disque perso je
te conseil de signer ton applet.... vu que l'applet ne peut pas
atteindre de fichier ou ouvrir de socket sur un poste ce même dans son
'sand box'
A savoir c'est que si tu fais tourner l'applet en local et que tu veux
atteindre un fichier il te faut mettre getCodeBase() devant le chemin
de ta ressource pour bien partir depuis le repertoir courrant de
l'applet, je ne sais pas trop pour le mode distant si ca tourne de la
meme maniere, les applets et moi on s'aime pas vraiment j'avoue que
j'evite cette salleté comme la peste....
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 23 févr. 2006 à 17:09
Merci encore !!!!
J'ai reflechi a ce systeme et en fait ca ne me sert a rien de signer l'applet vu que normalement le fichier se trouvera sur le serveur a coté de l'applet. L'erreur de sécurité que j'obtiens et donc surement du a un probleme de code. J'utilise en effet pour mettre une image sur un bouton le code :
private JButton motif = new JButton (new ImageIcon(chemin));
C'est peut etre ca qui fait foirer l'applet sur un navigateur non ? (ca passe tres bien via appletviewer). Il n'y a pas d'autre methode pour affecter une image sur un JButton ? Dans les constructeurs de la doc java ce format me semble le plus simple ... Je suis perdu :s
Si quelqu'un arrive a trouver mon erreur ... (sous appletviewer ca passe toujours aussi bien ... des que j'ouvre avec mon navigateur rien .. c'est blanc.
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 24 févr. 2006 à 13:22
Je ne sais que dire Twinuts sinon merci ... l'applet marche enfin !! Je n'ai pas compris l'histoire du xml mais ce n'est pas grave, j'ai enfin une applet opérationnelle !!! Un grand grand merci a toi !!
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 24 févr. 2006 à 13:58
Voila, j'ai reussi a placer tous les éléments de mon applet comme je le souhaitais. Cependant, j'ai remarqué que tu utilisais la méthode :
motif = new JButton (new ImageIcon(app.getImage(app.getCodeBase(),chemin)));
Cela te permettais de placer l'image sur le bouton. Je viens d'essayer de changer cette image en cliquant sur un bouton de l'applet. Le problème est que tu utilises la variable app de type Applet pour pouvoir modifier sur le bouton. Mais quand on réalise un ActionListener, je n'ai pas accès a cette variable étant donné que celle-ci est un paramétre du constructeur ... Comment faire ? Merci encore ;)
Squaredge
Messages postés20Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention25 février 2006 24 févr. 2006 à 18:03
Ah en effet ca marche fort bien maintenant :)
J'aurais une derniere question a te poser (vu que t'as l'air de bien toucher en Java ;))
Voila donc le programme que j'ai réalisé pour le moment :
C'est juste un test mais j'aurais aimé savoir : quand je sélectionne un element sur la case de droite, j'arrive a le dessiner sur l'applet (j'ai utilisé un g.drawRect(e.getX(),e.getY(),10,10);) dans un MouseClicked.
Le programme c'est que lorsque je réduit la page internet et que je la réouvre, ce que j'ai dessiné a disparu :(
J'ai donc utilisé un vecteur et j'ai stocké les informations dedans (coordonnées de tous les points). Mais je ne sais pas quand les réafficher ...
De même, l'utilisation d'un JPanel ou autre element Java ne serais pas plus facile ? Bien qu'il faille encore une fois dessiner des elements sur un JPanel ... ce qui n'est pas forcement facile.
Je crois que l'utilisation d'un g.draw.. serais plus facile (en faisant des tests sur la position du curseur ... mais je ne sais pas comment raffraichir ...
Sinon encore une fois merci Twinuts ... c'est la premiere fois que je poste sur ce forum et je suis vraiment surpris d'avoir obtenu une reponse et de la rapidité de celle-ci. C'est super d'avoir des forums comme ca ;) Merci ;)