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 :

JComponent ou JPanel et paint()


Sujet :

AWT/Swing Java

  1. #21
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Pourquoi faire du double buffering alors que Swing le fait **déjà** ?! Dans paintComponent(), dessine directement sur le Graphics fourni en paramètre. C'est tout.

  2. #22
    Membre expérimenté
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut
    Dans ce cas dois je utiliser setclips de la classe graphique et ainsi 'retailler' la zone graphique a à utiliser ou dois je n'afficher qu'une partie de la zone graphique (drawimage avec le maximum de paramètre

    depuis l'aide :

    drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
    Draws as much of the specified area of the specified image as is currently available, scaling it on the fly to fit inside the specified area of the destination drawable surface.

  3. #23
    Membre expérimenté
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut
    Le fait déjà ?

    je pensais que c'était une méthode à employer pour l'affichage..mon souci est que je dessine un graphique dans un JPanel (lui meme dans un autre JPanel) puis lors des redimmensionnements est de hide / show de la fenetre , le graphique ne s'affiche pas...j'ai donc pensé à enregistrer le contexte graphique dand les methodes paint ou pentCOmposent pour traiter l'image enregistrer AVANT les modifs graphiques...puis de traiter l'image pour ensuite l'afficher..

    Je ne désire pas refaire le traitement mathématique et donc graphique lors d'une modification graphique de la fenetre (il y a trop de point et le premier affichage est long, en enregistrant mon graphiqe en image je peux l'agrandir, le réduire, le cacher sans relancer le calcul)

    Sans ce traitement de paint* le graphique s'affiche tel un flash puis disparait immédiatement (repaint ou validate appelé automatiquement à la fin de l'excutioninitiale de la fenetre ???)

  4. #24
    Membre expérimenté
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut
    Désolé pour le doublon c'est le dernier message quiest bon
    Le fait déjà ?

    je pensais que c'était une méthode à employer pour l'affichage..mon souci est que je dessine un graphique dans un JPanel (lui meme dans un autre JPanel) puis lors des redimmensionnements est de hide / show de la fenetre , le graphique ne s'affiche pas...j'ai donc pensé à enregistrer le contexte graphique dans les methodes paint ou paintCOmposent pour traiter l'image enregistrée AVANT les modifs graphiques...puis de traiter l'image laisser l'affichage des autres composants swing puis ensuite de l'afficher..pour ne pas que l'image soit écraser..

    Je ne désire pas refaire le traitement mathématique qui (re)fabrique le graphique . lors d'une modification graphique de la fenetre, il faudrait que le graphique soit aussi modifier (agrandissement réduction etc..) mais il y a beaucoup de point sur ce graphique et le premier affichage est long, en enregistrant mon graphiqe en image je peux l'agrandir, le réduire, le cacher sans relancer le calcul...

    dois je utilisé les Layer ?

    Sans ce traitement de paint* le graphique s'affiche tel un flash puis disparait immédiatement (repaint ou validate appelé automatiquement à la fin de l'excutioninitiale de la fenetre ???)

  5. #25
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Si l'affichage disparaît c'est sûrement que tu utilises getGraphics() quelque part. Ta raison pour le buffer est valable (on parle ici d'image intermédiaire en fait) mais mal implémentée. Dans ton exemple tu redessinais sur l'image à chaque appel à paint. Voici comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    protected void paintComponent(Graphics g) {
      if (buffer == null) {
        buffer = // créer BufferedImage
        Graphics2D g2 = buffer.createGraphics();
        // dessiner sur g2
        g2.dispose();
      }
     
      g.drawImage(buffer, x, y, null);
    }
    Note que dans l'appel à drawImage() il n'est nul besoin de spécifier la largeur ou la hauteur.

Discussions similaires

  1. [JPanel] paint, paintComponent et repaint ?
    Par Pill_S dans le forum Composants
    Réponses: 8
    Dernier message: 08/02/2013, 18h38
  2. Différences entre JComponent et JPanel
    Par FaridM dans le forum Débuter
    Réponses: 5
    Dernier message: 07/04/2009, 12h07
  3. Ajouter un JComponent dans un JPanel est ce possible?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 23/04/2007, 22h02
  4. Probleme de JPanel et de paint()
    Par Mom's dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 18/11/2006, 00h32
  5. [JPanel] Placer un JComponent
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 18/07/2005, 10h13

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