Voilà je m'explique, j'aurai besoin pour une application de pouvoir écrire verticalement dans un JButton ( pour une histoire de lisibilité qui ne nous intéresse pas ici ) .
Jusqu'ici la seule solution que j'ai trouvée, c'est d'utiliser la classe VTextIcon.
Voilà le lien pour ceux qui veulent disséquer la classe :
http://www.macdevcenter.com/mac/2002...VTextIcon.java
Cette classe est plutôt sympa puisqu'elle permet de transformer le texte d'un JButton ( par exemple ) en un Icon, puis de mettre cette Icon dans ce même JButton, ainsi, même si ce n'est pas réellement le texte, mais une image du texte qui est vertical, on a le résultat souhaité.
Mon problème vient du fait que je voudrais pouvoir écrire du texte sur plusieurs lignes. Vous mes direz qu'il suffit d'utiliser des balises HTML pour le texte, un petit coup de <br /> et hop c'est réglé.
Bin non, malheureusement, cette classe prend le texte de façon brute, alors on se retrouve avec des balises HTML apparentes, mais toujours sur une seule ligne.
J'ai entamé la lecture de la classe, manière de détecter où se situe le passage du texte en un Icon, pour voir si on pouvait modifier quelque chose. Pour l'instant je me casse les dents sur la méthode paintIcon, si il y en a qui souhaitent me rejoindre...
J'avais eu une autre idée, beaucoup moins classe, afin d'en finir avec ça.
Faire un JButton normal (horizontal), avec le nombre de lignes voulues, le transformer en une image et mettre cette image en fond ( en gros le même principe que ce que fait cette classe, mais en moins casse pied ).
Le problème c'est que quand j'utilise ce bout de code :
J'ai un plantage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 BufferedImage image = new BufferedImage ( myButton.getWidth(), myButton.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = image.createGraphics(); myButton.paint(g2d); g2d.dispose(); try { ImageIO.write(image, "jpeg", destination); } catch (IOException e) { e.printStackTrace(); }java.lang.IllegalArgumentException parce que soit disant j'aurai essayé de créer une image avec width=0 et height=0 ;
Voilà, je pense, mal grès le pavé que j'ai écrit ( et je m'en excuse ) que vous avez compris ce que je cherche à faire.
Et je pense que si on trouve une solution on en fera bénéficier plus d'un !
Partager