Zum Inhalt springen

JTextPane - Text mit Icon ersetzen


dommes89

Empfohlene Beiträge

Nabend,

Und zwar habe ich folgendes Problem:

Ich laden einen Text aus einer Datei in ein JTextPane..

Nun meine Frage:

Wie kann ich denn beim Reinladen eine bestimmte Zeichenkette, z.B. ":-)", mit einem Icon ersetzen?

Sodass dann anstatt :-) im Text das entsprechende Icon erscheint?

Grüße dommes89

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Danke... aber das ist nicht das was ich brauche..

"// Insert the image at the end of the text"

klar damit kann ich ein icon in den text einfügen... das habe ich ja auch schon:

textPanel.insertIcon(new ImageIcon("c:\\image.jpg"));

aber ich will keines an das ende des textes einfügen, sondern an exakt der stelle an der eine bestimmte zeichenkette vorhanden ist, diese mit dem bild ersetzen....

hoffe es kann mir jemand weiter helfen...

danke shconmal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, habe das mit dem ersetzen usw. nun hinbekommen...

habe jedoch nun ein anderes Problem...

Also.. Ich habe ein JTextPane das einen Text aus einer Datei lädt und ausgibt, und dies jede Sekunde, sodass die Anzeige immer aktuell ist, auch wenn Änderungen an dem Text vorgenommen wurden.

Während diesem Schritt ersetze ich nun des weiteren eine bestimmte Zeichenkette mit einem Icon.

Nun folgendes Problem:

Die Scrollbar springt immer nach dem aktualisieren wieder zu dem letzten ersetzten Icon. D.h.: wenn der Text nach dem Icon noch länger ist wie das TextPane, so sieht man einen bestimmten Teil des Textes nicht mehr... da der Scrollbalken beim Icon stehen bleibt.

so sieht das ungefähr aus:

messagesText.setText("");

	    			messages = "";

	    			try {

	    				BufferedReader text_in = new BufferedReader(new FileReader(chat_path));

	    				String zeile = null;


	    				while ((zeile = text_in.readLine()) != null) {

//	    					messagesText.append(zeile+"\n");

	    					messages = messages.concat(zeile+"\n");

	    				}

	    				messagesText.setText(messages);


	    				while(messagesText.getText().indexOf(":-)")>0){

	    					messagesText.select(messagesText.getText().indexOf(":-)"), messagesText.getText().indexOf(":-)")+3);

	    					messagesText.insertIcon(icon);

	    				}




	    			} catch (IOException ex) {

	    				ex.printStackTrace();

	    			}
Also meine Frage: wie bekomme ich es hin, dass die Scrollbar trotzdem immer ganz unten ist bzw. nicht beim letzten icon stehen bleibt? Habe es schon mit
messagesPanel.getViewport().setViewPosition(new java.awt.Point(0, 100000000000));

am ende versucht, jedoch springt dann die scrollbar nur für den bruchteil einer sekunde nach ganz unten, danach wieder zum letzten icon.

hoffe mir kann da jemand helfen.

gruß

Bearbeitet von dommes89
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

leider weiß ich da jetzt auch nix, aber versuche mal nach jedem Laden des Textes ein revalidate() oder repaint() auf das messagePanel.

Wenn der Scrollbalken dabei wieder nach oben geht, dann sollte es nur ein Problem der TextPane sein. Vielleicht musst du auch nur die Textpane validieren.

Einen besseren Tip habe ich leider auch nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

habe es nun mit

messagesText.setCaretPosition(messagesText.getText().length());

hinbekommen =)

Was jedoch nun noch Luxus wäre:

Ich lade ja den Text aus einer Datei jede Sekunde neu in das TextPane, und stelle den Scrollbalken immer nach ganz unten... Bzw. er Springt sowieso immer wieder dann nach ganz unten...

Was mich interessieren würde:

Kann man es irgendwie machen, dass wenn ich den scrollbalken z.B. in die Mitte schiebe, dass dieser dann auch nach dem neu laden an dieser Text Position bleibt? So dass man sich den Text in Ruhe durchlesen kann, auch wenn ganz unten immer weiter Text angehängt wird? Und die ScrollBar nur dann immer ganz unten bleibt wenn man sie auch nach ganz unten getan hat?

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...