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

EDT/SwingWorker Java Discussion :

Un panneau texte déroulant


Sujet :

EDT/SwingWorker Java

  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut Un panneau texte déroulant
    Bonjour,
    J'aimerai créer en Java ce que l'on voit beaucoup dans les pages Web - une zone dans laquelle du texte déroule verticalement. Le peu d'exemple que je trouve utilise la méthode DrawString().
    Je me demande s'il ne serait pas plus simple de changer les coordonnées d'une zone de texte dans un JPanel pour simuler le déroulement...
    Quelqu'un a t-il plus de certitudes sur ce point ?
    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Encore plus simple et plus smart: juste un JTextComponent (genre JTextArea ou JTextPane )avec un JScrollPane dont tu caches les JScrollBar et dont tu changes la position via un Timer swing...

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    ça me plait, ça je creuse. Merci

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Le principe fonctionne nickel
    Reste un point à résoudre. J'utilise en fait un JEditorPane qui permet ainsi d'avoir du texte formatté, seulement je ne sais comment déterminer la hauteur du contenu permettant, lorsque le document a défilé dans sa totalité de réinitialiser les coordonées afin qu'il reparte du bas...

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu veux qu'il retourne tout en haut ou tout en bas?

    Enfin pour les deux la technique est la même de toute façon:

    Aller tout en bas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextPane.scrollRectToVisible( new Rectangle(0, jTextPane.getHeight()-2, 1, 1));
    Tout en haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextPane.scrollRectToVisible(new Rectangle(0, 0, 1, 1));

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Merci. Le souci n'est pas vraiment de faire repartir le contenu depuis le bas, mais plutôt de savoir que tout le contenu a défilé et qu'il faut faire repartie les coordonnées au debut.
    Comment savoir la hauteur d'un contenu lorsqu'il s'agit d'un contenu HTML ?

  7. #7
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Ok, il suffit d'utiliser : htmlPane.getHeight()

    c'est trop génial

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu as la méthode getVisibleRect qui devrait faire l'affaire

    Il suffit de voir si le visibleRect du composant contient un rectangle supposé être à la fin comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextpane.getVisibleRect().contains(new Rectangle(0, jTextPane.getHeight()-2, 1, 1));
    Ca revoie true si le composant affiché contient bien un rectangle se situant à la toute fin du composant.

  9. #9
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Merci encore.

  10. #10
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voici le code que j'utilise pour tester la fin du défilement. Je ne sais s'il est académique, mais il fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Point p = htmlPane.getLocation() ;
    htmlPane.setLocation(p.x, (p.y)-1);
    if(p.y < ((htmlPane.getHeight() - (scrollPane.getHeight() * 2)) * -1)) htmlPane.setLocation(p.x, 0);

  11. #11
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par sinok Voir le message
    Tu as la méthode getVisibleRect qui devrait faire l'affaire

    Il suffit de voir si le visibleRect du composant contient un rectangle supposé être à la fin comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextpane.getVisibleRect().contains(new Rectangle(0, jTextPane.getHeight()-2, 1, 1));
    Ca revoie true si le composant affiché contient bien un rectangle se situant à la toute fin du composant.
    Quelle est la différence entre monTextpane et jTextPane ?

  12. #12
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Quelle est la différence entre monTextpane et jTextPane ?

    Aucune, juste une petite erreur de frappe en passant

  13. #13
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    J'arrive presqu'au bout de mon développement. Le paneau déroulant fonctionne à merveille, et point besoin de DrawString et de calculs faramineux (juste 2 lignes de code !)
    Il me reste cependant un problème à régler:

    Lorsque je fais défiler je JEditorPane vers le haut et que celui-ci se termine, une zone grise apparait en dessous et aucun setBackground() n'y fait ni sur le JEditorPane, ni sur le ScrollPane qui l'éberge.

  14. #14
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Deuw possibilités: changer le background du viewport du jscrollpane ou rendre le viewport non opaque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monScrollPane.getViewport().setBackground(Color.white);
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monScrollPane.getViewport().setOpaque(false);

  15. #15
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Merci encore, sinok
    Cette fois, c'est définitivement résolu. Tout fonctionne à merveille.

  16. #16
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voici le résultat brièvement enregistré avec screentoaster. Le bean est encapsulé dans une aplication Oracle Forms.
    http://www.screentoaster.com/watch/s...9cRFVeW1hZV1BV

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

Discussions similaires

  1. [MySQL] affichage données dans une zone de texte déroulante
    Par mayers dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/01/2008, 22h20
  2. Requête SQL pour remplir une zone de texte déroulante
    Par uranium-design dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/10/2007, 13h15
  3. Créer texte déroulant transparent
    Par popochen dans le forum Flash
    Réponses: 1
    Dernier message: 02/09/2007, 21h40
  4. Texte déroulant dans un cadre
    Par Ocelot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 21/01/2007, 19h39
  5. Réponses: 7
    Dernier message: 13/12/2003, 15h09

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