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

Composants Java Discussion :

Rendre un composant perso Scrollable


Sujet :

Composants 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 Rendre un composant perso Scrollable
    Bonjour,

    j'ai crée un composant qui dessine une courbe.
    J'ai donc crée une classe qui étend JComponent.
    Je souhaite que, quand les points que je dessine sortent du composant, des scrollbar apparaîssent.
    Mon composant étend la classe Scrollable est il est placé dans un JScrollpane.
    Mon problème est que je ne sait pas quoi mette dans les méthode de l'interface Scrollable. J'ai regardé le code de la classe JTextComponent et j'ai recopié les méthodes concernées.
    Mais toujours pas de scrollbar qui apparaîssent.
    Quelqu'un pourraît m'expliquer comment faire, ou encore mieux quelqu'un aurait'il un exemple ??

    Voici l'implémentation des méthodes de l'interface Scrollable

    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
      /* (non-Javadoc)
       * @see javax.swing.Scrollable#getPreferredScrollableViewportSize()
       */
      public Dimension getPreferredScrollableViewportSize() {
        return getPreferredSize();
      }
     
      /* (non-Javadoc)
       * @see javax.swing.Scrollable#getScrollableUnitIncrement(java.awt.Rectangle, int, int)
       */
      public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
        switch(orientation) {
        case SwingConstants.VERTICAL:
          System.out.println("getScrollableUnitIncrement : " + visibleRect.height/10);
            return visibleRect.height / 10;
        case SwingConstants.HORIZONTAL:
          System.out.println("getScrollableUnitIncrement : " + visibleRect.width/10);
            return visibleRect.width / 10;
        default:
            throw new IllegalArgumentException("Invalid orientation: " + orientation);
        }
      }
     
      /* (non-Javadoc)
       * @see javax.swing.Scrollable#getScrollableBlockIncrement(java.awt.Rectangle, int, int)
       */
      public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
        switch(orientation) {
        case SwingConstants.VERTICAL:
          System.out.println("getScrollableBlockIncrement : " + visibleRect.height);
            return visibleRect.height;
        case SwingConstants.HORIZONTAL:
          System.out.println("getScrollableBlockIncrement : " + visibleRect.width);
            return visibleRect.width;
        default:
            throw new IllegalArgumentException("Invalid orientation: " + orientation);
        }
      }
     
      /* (non-Javadoc)
       * @see javax.swing.Scrollable#getScrollableTracksViewportWidth()
       */
      public boolean getScrollableTracksViewportWidth() {
    	if (getParent() instanceof JViewport) {
    	    return (((JViewport)getParent()).getWidth() > getPreferredSize().width);
    	}
    	return false;
      }
     
      /* (non-Javadoc)
       * @see javax.swing.Scrollable#getScrollableTracksViewportHeight()
       */
      public boolean getScrollableTracksViewportHeight() {
    	if (getParent() instanceof JViewport) {
    	    return (((JViewport)getParent()).getHeight() > getPreferredSize().height);
    	}
    	return false;
      }
    C'est le code recopié du JTextComponent[/b]

    HELP ME PLEASE

    Cyrille

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    As tu redéfinit les méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    getSize()
    getMinimumSize()
    getMaximumSize()
    getPreferredSize()
    Car ce sont elles qui sont utilisée par le JScrollPane.
    Mess with the best, die like the rest!

  3. #3
    Membre régulier Avatar de Actarus78
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 87
    Points : 118
    Points
    118
    Par défaut
    As tu essayé avec les méthodes de l'objet JScrolPane.???

    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
    tonJsp.setAutoscoll(true);[quote]
     
    ce code affiche les barres de défilement lorsque le composant placé dans ton JscrolPane est plus grand que ta surface d'affichage définit par le viewport de ton JscrolPane.
     
    Si j'ai compris ton explication ca donerai un truc du genre
     
    [code]JComponent myComponment = new JComponent(); //appel a ta classe qui étend de JComponent
    JScrollPane jsp = new JScrollPane();
     
    jsp.getViewport().setView(myComponment); 
    jsp.setAutoscrolls(true);
     
    ...
    taJFrame.add(jsp, BorderLayout.Center);[/code]
     
    tu peux aussi utiliser les autres méthodes de la classe JScollPane , comme setMaximumSize(), setMinimumSize(), setPreferredSize() etc...[/quote]

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

Discussions similaires

  1. [Joomla!] Modifier un composant perso 1.5 pour le rendre compatible 1.0.15
    Par tentsuken dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 16/11/2010, 10h22
  2. Taille composant perso via le layout ?
    Par Neilos dans le forum Composants
    Réponses: 6
    Dernier message: 04/12/2005, 18h33
  3. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 01h12
  4. Composant perso disparaît lors du redimensionnement du composant parent
    Par GENERYS dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 05/10/2005, 23h07
  5. Réponses: 1
    Dernier message: 08/07/2005, 03h46

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