IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Superposer des images.


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Superposer des images.
    Bonjour à tous, j'ai cherché un peu partout sur internet mais je n'ai pas trouvé de réponse à mon problème. Voici ma classe main :


    public class Test1{
    public static void main(String[] args) {
    Plateau p1 = new Plateau(5,4);
    Bateau b1 = new Bateau();
    b1.x=1;
    b1.y=3;
    JFrame frame=new JFrame();
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.add(p1);
    frame.add(b1);
    frame.pack();
    frame.setVisible(true);
    }
    }

    et voici un de mes paint que l'on retrouve pour afficher un bateau ou un morceau du plateau :

    public void paint(Graphics g) {
    Color c = g.getColor();
    Image image = new ImageIcon("boat.gif").getImage();
    g.drawImage(image,x*18,y*18,this);
    g.setColor(c);
    }

    Mon problème est que lorsque je fais add() un premier élément et ensuite un deuxieme, le premier élément disparait lorsque le second est dessiné. Je désirerais faire apparaitre mon bateau sur le plateau. Est ce que quelqu'un pourrait m'aider ou m'indiquer une piste de recherche.

    Au passage, je voulais savoir pourquoi mon setSize(500,500) ne marche pas...est ce que je l'applique au mauvais endroit ?
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Ton setSize() ne marche pas car tu mets un pack() plus loin dans ton code.

    la commande pack() force la fenetre a avoir la taille optimale, elle va donc ignorer la commande setSize(). Si tu veux qu'elle prenne la taille 500x500 malgré ton pack(), utilise la méthode setPreferredSize().


    Pour regler ton probleme de dessin.
    tu dois gerer une liste des elements a dessiner.

    quand tu fais un "add" comme tu dis. tu dois ajouter l'element dans la liste.
    Au moment ou tu redessine du parcourt ta liste et tu dessine les elements.

    mais honnetement je suis pas sur que ca regle ton probleme car je ne vois pas comment tu gere tes dessins.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Etant donné que je débute je ne connais pas vraiment swing. Je pensais qu'en faisant un simple add, java allait affiché mes dessins les uns par dessus les autres dans l'ordre ou ils sont dessinés. Mais non... Donc si j'ai bien compris par exemple il faudrait que je fasse un tableau qui contient mon plateau et mes bateaux et que je ne fasse qu'un appel add(tableau). C'est ca ?

    Sinon il n'y a pas de sorte de calques que je pourrais remplir et superposer les uns sur les autres ?

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Regarde la javadoc de la classe javax.swing.JLayeredPane, ce layout permet de superposer les panels. Ca peut résoudre ton problème.

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Citation Envoyé par T-O-N-Y
    Je pensais qu'en faisant un simple add, java allait affiché mes dessins les uns par dessus les autres dans l'ordre ou ils sont dessinés.
    Eh non, l'idée, c'est que le composant est complètement effacé avant que la méthode paint ne soit appelée (enfin c'est plus compliqué, c'est optimisé, mais le principe c'est ça). Si tu veux ajouter un bateau à ton dessin, il faut que dans la méthode paint tu continues à dessiner tous les anciens bateaux plus ton nouveau. D'où l'intérêt de la List ou du Set de bateaux, que tu parcours dans une boucle dans la méthode paint.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Superposer des images
    Par hebusdetroy dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 29/04/2008, 16h50
  2. [VB.NET] Comment superposer des images ?
    Par zetta dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/10/2006, 13h41
  3. [VB6]Superposer des images pour en faire qu'une seule
    Par spikto dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2006, 14h49
  4. [LG] Superposer des images
    Par biker dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2006, 18h22
  5. [Image]Alternative à GD pour superposer des images
    Par Invité4 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 14/01/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo