Posts Tagged ‘ Java

[HowTo] Java swing – Scroller automatiquement dans un jTextArea

J’ai eu besoin de faire un petit logiciel de contrôle de flux récemment et j’y ai donc intégré une console affichant les évènements reçus du réseau, etc.
Pour que ma console soit sexy, j’ai voulu que celle-ci affiche toujours les derniers messages arrivés et donc qu’elle scroll toute seule vers le bas. Malheureusement, swing ne semble pas gérer cela de base **arf**, il va donc falloir un peu ruser.
Pour faire cela (j’utilise Netbeans au passage), lorsque l’on ajoute un jTextArea, un jScrollPane dans lequel il se trouve est automatiquement créé. C’est parfait. Si vous faite votre interface à la main, il faut donc mettre votre jTextArea que nous appellerons jta dans un jScollPane que nous appellerons jsp

On commence par récupérer la jScrollBar de notre jsp

[sourcecode language="java"]
JScrollBar scrollBar = jsp.getVerticalScrollBar();
[/sourcecode]

On ajoute ensuite le texte que l’on veut dans notre jTextArea

[sourcecode language="java"]
jta.append("Scroll and look at me !");
[/sourcecode]

Ensuite, on regarde si celle-ci est visible. Si c’est le cas, c’est que le jTextArea est déjà plein et on la place donc en bas

[sourcecode language="java"]
if(scrollBar.isVisible())
jta.setCaretPosition(jta.getDocument().getLength());
[/sourcecode]

Voilà, rien de plus simple et très pratique.

Maintenant, voyons le cas ou on aurait bougé dans notre jTextArea et que l’on ne veuille pas scroller à chaque fois qu’un nouveau message y est ajouté… **beaucoup d’applications ne gèrent pas ça et c’est vraiment agaçant!!!**
Pour cela, on rajoute une ligne afin de vérifier si la scrollbar est déjà en bas (dans le cas où on n’aurait donc pas bougé :

[sourcecode language="java"]
boolean isAtBottom = ((scrollBar.getValue() + scrollBar.getVisibleAmount()) == scrollBar.getMaximum());
[/sourcecode]

Puis, on remplace notre test par :

[sourcecode language="java"]
if(isAtBottom)
jta.setCaretPosition(jta.getDocument().getLength());
[/sourcecode]

Voilà, en espérant que ce petit tip aidera :)

AVL Médiamenu – Let The Adventure Begin

Aperçu de la borne

Aperçu de la borne

En ce beau début d’été 2008, Jean Marc m’a contacté pour me proposer un petit boulot. Étant toujours à la recherche de nouvelles expériences, je me suis donc intéressé à la chose pour voir ce dont il était question exactement et si c’était intéressant.
Pour la petite histoire, AVL Interactive, une toute jeune société basée à Nice voulait se lancer dans le commerce de bornes interactive pour les restaurants. Nous avons donc répondu à l’appel d’offre avec un joli début de spécifications tout ça et avons été choisi pour développer le (les) logiciels.
En effet, il nous était demandé d’une part de développer une application sur une borne tactile présentant les menus, cartes, infos sur le restaurant, et d’autre part l’application qui permettait de gérer cette borne. Oui, il aurait été absurde de devoir sortir et brancher un clavier sur celle-ci pour pouvoir aller la mettre à jour, rajouter des plats, …

Nous nous sommes donc lancé dans l’aventure et avons travaillé pendant la majeur partie de l’été au projet (adieu vacances snif). AVL Interactive étant toute jeune et seulement composée de son créateur et d’un comptable, nous avons beaucoup travaillé avec eux sur le design de la borne, ainsi que d’autres éléments qui n’étaient pas directement liées au développement, ce qui fut une bonne chose et une bonne expérience.

Juin 2009, la première borne de test est installée à Paris au restaurant “Pierre au palais royal“, juste à côté du Louvre. C’était parti pour 2 mois de tests en conditions réelles pour notre petit bébé.


Aujourd’hui, les bornes commencent à se vendre, les sous à rentrer, une deuxième version en gestation dans nos cerveaux (et une ébauche sur nos pc :p).
Et ne pas oublier un tout nouveau site pour l’entreprise qui la commercialise :
http://www.avlinteractive.com/