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

Agents de placement/Fenêtres Java Discussion :

Composant perso disparaît lors du redimensionnement du composant parent


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 22
    Points
    22
    Par défaut Composant perso disparaît lors du redimensionnement du composant parent
    Bonjour,

    j'ai crée un JLabel vertical, mais j'ai un problème.
    Mon JLabel s'affiche correctement, mais si je change la taille de la fenêtre où il se trouve et bien il disparaît

    Si quelqu'un à une idée de quoi àa peut provenir ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public class VerticalLabel extends JLabel {
      private final static int BORDER_HEIGHT = 10;
      private String          name;
     
      public VerticalLabel(String name) {
        super();
        this.name = name;
      }
     
      public void setText(String text) {
        name = text;
        repaint();
      }
     
      protected void paintComponent(Graphics graphics) {
        Graphics2D graphics2D = (Graphics2D) graphics;
     
        super.paintComponent(graphics);
     
        // CONFIGURATION GRAPHIQUE...
        // Désactivation de l'anti-aliasing.
        graphics2D
            .setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
        graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
            RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
        // Demande de rendu rapide.
        graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
        graphics2D.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
            RenderingHints.VALUE_COLOR_RENDER_SPEED);
        graphics2D.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
            RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
        graphics2D.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
     
        graphics2D.translate(0, getHeight());
        graphics2D.rotate(-Math.PI/2);
        graphics2D.setFont(getFont());
        graphics2D.drawString(name, BORDER_HEIGHT/2 , getWidth()/2);
      }
     
      public Dimension getPreferredSize() {
        Dimension dimension = new Dimension(getStringHeight()+BORDER_HEIGHT, getStringWidth()+BORDER_HEIGHT);
        return dimension; 
      }
     
      private int getStringWidth() {
        FontMetrics metrics = getFontMetrics(getFont());
        int width = metrics.stringWidth(name);
     
        return width;
      }
     
      private int getStringHeight() {
        FontMetrics metrics = getFontMetrics(getFont());
        int height = metrics.getHeight();
     
        return height;
      }
    }
    Merci d'avance.

    Cyrille[/b]

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Ca peut provenir du layout. Essaye de surcharger egalement getMinimumSize(). Oh et pourquoi desactive-tu tous les rendering hints dans la methode de dessin ? Sur un tel composant tu ne gagneras pas de performances et avec Java 1.6 tu perdras le benefice de l'anti aliasing automatique (tous les autres composants Swing seront anti aliases donc ca fera bizarre).
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup c'était bien à cause de la méthode getMinimumSize.
    En même temps c'est logique vu que je n'ai met rien dans mon JLabel (ni texte ni image)

    Sinon je désactive tout les hints parceque j'avai vu ça dans un exemple.

    Merci

    Cyrille

  4. #4
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    je suis pas tres bon en swing, mais ca serait pas mieux de faire tous les tracés dans une Image (lBufferedImage) par exemple dans le constructeur, et dans paint() ne faire que afficher cette image ? (d'un point de vue des perfs)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Ce serait mieux... il y a 5 ans ) Sur un dessin pareil cela n'a aucun interet a part utiliser de la memoire et demander plus de temps au programmeur (et cela complique le code). La mise en cache des composants peut TRES VITE bouffer la memoire. Regarde le code source de Swing, tu ne verras cette technique nulle part car Swing possede son propre systeme de double buffering.
    Romain Guy
    Android - Mon livre - Mon blog

  6. #6
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    ok, merci pour la précision.

    lunatix : 5 ans de retard

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AS2] Problème avec ComboBox lors création d'un composant perso
    Par aldo-tlse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 24/05/2006, 18h51
  2. Redimensionnement des composants
    Par hush dans le forum Agents de placement/Fenêtres
    Réponses: 20
    Dernier message: 21/08/2005, 11h07
  3. [SWT][Débutant]Redimensionner un composant
    Par vberetti dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 16/07/2005, 20h52
  4. Réponses: 1
    Dernier message: 08/07/2005, 02h46
  5. Redimensionner un composant avec l'API Win32
    Par le merou dans le forum Composants VCL
    Réponses: 5
    Dernier message: 29/05/2005, 13h59

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