PDA

View Full Version : [Java] Problema JTextPane


UnknownSoldier
29-08-2008, 21:18
Salve. Vorrei sapere come fare a specificare una determinata posizione di una stringa posta in un JTextPane... mi spiego meglio: mettiamo caso che abbia questo codice:


...
String string = "hello :-)!!!";
textPane.setText (string);
...


Ho creato una stringa e l'ho inserita nel JTextPain. Ma se io ad esempio volessi sostituire i caratteri ":-)" della stringa con una ImageIcon? Come dovrei fare? o_O

Mixmar
29-08-2008, 22:00
Forse la soluzione più semplice al tuo problema è usare testo formattato come HTML al posto di testo semplice: in questo modo puoi inserire immagini come tag img. Le JTextPane sono in grado di capire la formattazione HTML (fino ad un certo livello!) e a renderizzarla.

Ecco qui (http://java.sun.com/docs/books/tutorial/uiswing/components/editorpane.html) un tutorial.

Potresti scrivere, ad esempio:


String string = "<html><p>hello <img href="link_to_smile_image.gif"><p></html>"


Dovresti ottenere l'effetto che vuoi.

Però dovrai inventarti un nome più significativo di "string"! :Prrr:

UnknownSoldier
29-08-2008, 22:14
Forse la soluzione più semplice al tuo problema è usare testo formattato come HTML al posto di testo semplice: in questo modo puoi inserire immagini come tag img. Le JTextPane sono in grado di capire la formattazione HTML (fino ad un certo livello!) e a renderizzarla.

Ecco qui (http://java.sun.com/docs/books/tutorial/uiswing/components/editorpane.html) un tutorial.

Potresti scrivere, ad esempio:


String string = "<html><p>hello <img href="link_to_smile_image.gif"><p></html>"


Dovresti ottenere l'effetto che vuoi.

Però dovrai inventarti un nome più significativo di "string"! :Prrr:

Ho provato già ad usare l'html con un JEditorPane e il mio problema è che in una frazione di secondo i componenti che si trovano in torno all'immagine da caricare vengono spostati prima di essere messi per bene. Vorrei evitare quindi questi spostamenti indesiderati caricando direttamente un'immagine, invece di usare l'html ;)