7
votes

Réglage de la barre de défilement sur un Jscrollpane

J'ai ce jtextpane code> (enveloppé dans un jscrollpane code>) qui est soutenu par un HTMELLEDITORKIT code>. Le contenu du jtextpane code> est simple HTML avec des images (fichiers locaux) intégrés à l'aide des balises IMG. Le problème est que lorsque vous chargez le code> jtextpane code>, il prend une fraction de seconde pour charger, puis il apparaît avec la barre de défilement en bas de la page. Si je le fais:

((AbstractDocument)text.getDocument()).setAsynchronousLoadPriority(-1);


0 commentaires

3 Réponses :


0
votes

Votre application est-elle sur une seule chance par hasard? Si vous pouvez demander une liste de threads exécutant et être notifié lorsqu'il est terminé, puis définissez la valeur de la barre de défilement. Est-ce une option?

ou vous pouvez fournir un imageObserver à chaque image chargée et définissez la position de la barre de défilement lorsque toutes les images sont rapportées en chargement?


1 commentaires

Les applications battantes reposent sur un fil appelé thread d'expédition d'événement pour contrôler toutes les actions de l'interface graphique. Vous pouvez vous contourner cela si vous en avez besoin, mais tout le travail que je fais en ce moment est sur le fil d'expédition de l'événement. Cela pourrait être considéré comme une option, mais est probablement aussi mauvais qu'un piratage comme ce que j'ai proposé dans ma question. Je garderai ça à l'esprit cependant.



22
votes

Avez-vous essayé d'utiliser invoquater?

scroll.setVerticalScrollbar(new JScrollBar() {
    public void setValue(int value) {
        new Exception().printStackTrace();
        super.setValue(value);
    } 
});


2 commentaires

La première solution fonctionne, merci. Pourquoi sur Terre n'existe-t-il pas une méthode pour définir cela sans avoir à appeler des oscillabilité?


Aucune idée. Je pense que la façon dont il est conçu est que vous devez créer le jscrollpane, l'ajouter à l'écran et alors définir la valeur. N'a aucun sens pour moi.



2
votes

Les suivants ont résolu le problème pour moi, après 50 minutes de désespoir: xxx


0 commentaires