JTextPane - markierten Text Formatieren

Status
Nicht offen für weitere Antworten.

Sythus

Mitglied
Hallo Leute,

ich bastele zur Zeit an einem Texteditor der JTextPane nutzt und schon einige Formatierungsmöglichkeiten besitzt!

Problem: Bisher kann man nur den kompletten Text formatieren.

Ich bräuchte nun einen Ansatz oder eine Idee wie ich markierten Text einzelnen formatieren kann.
Welche Elemente könnten mir helfen?

Bin für jede Idee Dankbar,
habe zwar in der Suche schon einige Posts gefunden die sich auf das Thema beziehen, jedoch gab esn irgends eine hilfreiche Antwort.

Code posten hilft hier warscheinlich nicht oder?

Danke schonmal für eure Hilfe

lg Sythus
 

The_S

Top Contributor
Sythus hat gesagt.:
Welche Elemente könnten mir helfen?

Schau dir mal die Klasse DefaultStyledDocument an bzw. generell das Interface Document. Mit Code kann ich leider nicht dienen, der liegt irgendwo vergraben auf meiner Festplatte (glaub ich zumindest ;) ).
 

Sythus

Mitglied
Okay danke,

hab mich mal drangesetzt aber habe ein Problem:

Code:
package guiPackage;

import java.awt.Color;

import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;



class Text extends JTextPane  {

	private static final long serialVersionUID = 1L;

	Text(int Zeilen, int Spalten) {
		super();
		setBackground(Color.white);
	}
	public void append(Color c, int start, int end, String selectedText) { // better implementation--uses StyleContext
		 
		 StyleContext sc = StyleContext.getDefaultStyleContext();
		 AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY,
		                                     StyleConstants.Foreground, c);

		
		setCaretPosition(start); 
		setCharacterAttributes(aset, false);
		 
		 
		replaceSelection(selectedText);
	}


}

Code:
private void Font_aktualisieren() {

			String farbe = (String) farben.getSelectedItem();

			int start = compTField.getSelectionStart();
			int end = compTField.getSelectionEnd();
			String selectedText = compTField.getSelectedText();
			
			
			//Farben
			if (farbe.equals("Schwarz"))
				compTField.append(Color.black, start, end, selectedText);

			if (farbe.equals("Rot"))
				compTField.append(Color.red, start, end, selectedText);

			if (farbe.equals("Grün"))
				compTField.append(Color.green, start, end, selectedText);

			if (farbe.equals("Blau"))
				compTField.append(Color.blue, start, end, selectedText);

			if (farbe.equals("Magenta")) 
				compTField.append(Color.magenta, start, end, selectedText);

			if (farbe.equals("Cyan"))
				compTField.append(Color.cyan,  start, end, selectedText);

			if (farbe.equals("Gelb"))
				compTField.append(Color.yellow,  start, end, selectedText);
			
			
		}

	}


Also Klasse Text regelt nun auch markierten Text zu formatieren, in fontaktualisieren wird anfang und ende ausgelesen und dann jenachdem welche Farbe angewählt ist die append Funktion aus der Klasse Text aufgerufen.

Pro: Es funktioniert, der markierte Text wird eingefärbt
Problem: er wird einfach hintendran gesetzt, d.h. der ungefärbte einst markierte Text bleibt stehen und ich kriege es einfach nicht hin, das dass alte markierte einfach weggelöscht wird!

Hier zum verständnis
doppelText.JPG




Danke schonmal für eure Hilfe

PS: @ Zilti
wenn ich JEditorPane benutze kann ich die Funktion setCharacterAttributes(aset, false) aus Text ->Funktion append nicht benutzen und es klappt überhaupt nicht, daher bleibe ich erstmal bei JTextPane
 

The_S

Top Contributor
Sei mal nicht so ungeduldig. So schnellen support wie hier bekommst du normal nichtmal bei einem kostenpflichtigen Angebot!

Du hängst ja auch alles hintendran an dein compTField (append). Du musst zuerst das markierte löschen und dann über insert an der gewünschten Stelle wieder einfügen.
 

Sythus

Mitglied
Huhu,

sorry ungeduldig sollte das nicht wirken!! Bin ja dankbar für jede Hilfe die ich kiege.

Das Löschen ist ja genau mein Problem, ich kriege es nicht hin.
Da gibt es irgendwie nichts was löschen kann, kam bisher nur auf die Idee den kompletten Text bis kurz vor der Markierung komplett neu in das Textfeld zu schreiben und danach erst den Farbigen teil.
Das ist aber auch nicht besonders effizient und hinbekommen hab ich es auch nicht :/


bin wirklich für jede Hilfe Dankbar
LG Sythus
 
M

MiDniGG

Gast
So. Ich versuchs dann mal...

Also. Als erstes erstmal die länge und Position vom String bestimmen:

Code:
.getSelectionStart();
.getSelectionEnd();

Als nächstes tust dann mit em SimpleAttributeSet und der Position das Style über den StyleConstants setzen. So etwa:

Code:
private void setBold(SimpleAttributeSet sas, int pos) {
		
        if(StyleConstants.isBold(sas))
        {
        	StyleConstants.setBold(sas, false);
        }
        else
        {
        	StyleConstants.setBold(sas, true);
        }
        setCharacterAttributes(pos, 1, sas, true);
	}

Mit der if-Abfrage schaust einfach ob der markierte Text schon fett is oder ned...

mit .setBold eben fett machn. und dieses setCharacterAttributes schaust eben jedes einzelne Zeichen an und kehrst ihn um ...

So. Besser kann ich s leider ned erklären. Vielleicht hilft es ja. Bei weiteren Fragen wende dich an Hobbit ;-)

cya & have a nice weekend!!! :)
 

The_S

Top Contributor
wichtig ist evtl. noch, dass diese setBold-Methode (+ Konsorten) in dein StyledDocument müssen (welches du deiner JEditorPane zuweist), und dass du dir das SimpleAttribute set für den zu veränderten Text auslesen solltest, da du sonst alle bereits gesetzten Attribute wieder überschreibst.

[edit] Das ist vermutlich auch ganz interessant für dich http://www.java-forum.org/de/viewtopic.php?p=390750#390750
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
J Swing JTextpane aktuallisiert nicht den setText? AWT, Swing, JavaFX & SWT 9
M Strings im JTextPane vergleichen und mit StyledDocument formatieren AWT, Swing, JavaFX & SWT 3
X JTextPane automatischer Zeilenumbruch IM Wort AWT, Swing, JavaFX & SWT 2
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
S Swing JtextPane sau langsam AWT, Swing, JavaFX & SWT 15
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
C JTextPane scrollt mit setText() immer nach oben AWT, Swing, JavaFX & SWT 2
S Swing Style Attribute aus JTextPane kopieren AWT, Swing, JavaFX & SWT 1
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
TheJavaKid JTextPane: komplexe Formatierung (links) AWT, Swing, JavaFX & SWT 2
B Swing JTextPane - Einfärbungen auf "default" AWT, Swing, JavaFX & SWT 2
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
T Hintergrundbild in JTextPane fixieren AWT, Swing, JavaFX & SWT 2
M Swing JTextPane frisst Anführungszeichen AWT, Swing, JavaFX & SWT 2
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
H Swing JTextPane hat unästhetisches Scrollbar AWT, Swing, JavaFX & SWT 3
R Swing Renderproblem bei HTML in einer JTextPane AWT, Swing, JavaFX & SWT 12
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
Tobse Swing [JTextPane] Farbliche Hervorhebung AWT, Swing, JavaFX & SWT 9
X Swing JTextPane bei Größenänderung Formatierung behalten AWT, Swing, JavaFX & SWT 11
0 JTextPane copy/paste trotz editable(false) ? AWT, Swing, JavaFX & SWT 10
T Swing JTextPane Tastatureingabe abfangen AWT, Swing, JavaFX & SWT 4
B Durchsichtiges JScroll und JTextPane AWT, Swing, JavaFX & SWT 4
xehpuk Swing JTextPane in JScrollPane wird nicht ordentlich neugezeichnet AWT, Swing, JavaFX & SWT 3
S Swing JTextPane append formatprobleme AWT, Swing, JavaFX & SWT 5
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
C Zeilenumbruch von JTextPane wird nicht erkannt AWT, Swing, JavaFX & SWT 2
S JEditorPane oder JTextPane? AWT, Swing, JavaFX & SWT 2
P Aktuelle Zeile in JTextPane farblich hervorheben AWT, Swing, JavaFX & SWT 3
J JTextPane Background setzen AWT, Swing, JavaFX & SWT 6
T Text in JTextPane vertikal (!) zentrieren AWT, Swing, JavaFX & SWT 4
M Zugriff paralleler Threads auf selbes JTextPane AWT, Swing, JavaFX & SWT 6
M JTextPane - bewegungsloses Hintergrundsbild (Duplikat) AWT, Swing, JavaFX & SWT 2
B JTextPane formatierten Inhalt speichern AWT, Swing, JavaFX & SWT 2
E JTextPane setText ignoriert \n AWT, Swing, JavaFX & SWT 6
P Swing Sichtbaren teil eines JTextPane herausbekommen (mit JScrollPane) AWT, Swing, JavaFX & SWT 2
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
K Swing JTextPane Formatierungen SyntaxHighlighting AWT, Swing, JavaFX & SWT 11
F Mit TAB JTextPane wechseln AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
S Buchstabenpositionen in JTextPane erhalten..? AWT, Swing, JavaFX & SWT 5
I JTextPane und Hyperlink (ohne JEditorPane) AWT, Swing, JavaFX & SWT 5
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
A Swing JTextPane sehr langsam AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
M Swing JTextPane mit JScrollPane soll aussehen wie JLabel AWT, Swing, JavaFX & SWT 3
A JTextPane: Text hinzufügen AWT, Swing, JavaFX & SWT 9
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
K Swing jTextPane zeilenumbruch AWT, Swing, JavaFX & SWT 2
Stillmatic JTextPane langsam? AWT, Swing, JavaFX & SWT 5
E Swing JTextPane linewrap AWT, Swing, JavaFX & SWT 4
M Swing [JTextPane] Cursor lässt sich nicht mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 3
T Swing xml in JTextPane mit EditorKit, StyledDocument & co. AWT, Swing, JavaFX & SWT 3
M Cursor setzen im JTextPane AWT, Swing, JavaFX & SWT 3
M Formatierungsfehler JTextPane WARUM ?? AWT, Swing, JavaFX & SWT 4
JavaKaffee Array auslesen in jTextPane? AWT, Swing, JavaFX & SWT 9
E JTextPane Bold Italic und Co AWT, Swing, JavaFX & SWT 6
M JTextPane Ende des Feldes AWT, Swing, JavaFX & SWT 4
D JTextPane - Text andersfarbig unterstreichen AWT, Swing, JavaFX & SWT 7
P Probleme mit JTextpane AWT, Swing, JavaFX & SWT 7
M Größe von JTextPane manuell bei Bedarf anpassen AWT, Swing, JavaFX & SWT 6
bugmenot JTextPane String stimmt nicht mit übergebenem String überein AWT, Swing, JavaFX & SWT 9
C JTextPane <br oder <p> statt \n AWT, Swing, JavaFX & SWT 2
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
G JTextPane durchsichtig? AWT, Swing, JavaFX & SWT 6
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
S JTextPane: Probem mit AlignmentAction AWT, Swing, JavaFX & SWT 3
J Problem mit JTextPane & JScrollPane (horizontal) AWT, Swing, JavaFX & SWT 3
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2
Steev JTextPane mit Textformatierung funktioniert nicht AWT, Swing, JavaFX & SWT 5
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
M Makierten Text in JTextPane zentrieren AWT, Swing, JavaFX & SWT 2
F JTextPane aktive Zeile AWT, Swing, JavaFX & SWT 2
G insert & JTextPane AWT, Swing, JavaFX & SWT 4
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
S Farben eienr JTextPane dynamisch zuweisen AWT, Swing, JavaFX & SWT 2
R JTextPane scrollen vermeiden AWT, Swing, JavaFX & SWT 2
B Feste Breite einer JTextPane, die HTML anzeigt AWT, Swing, JavaFX & SWT 8
A JScrollPane in JTextPane AWT, Swing, JavaFX & SWT 2
B Swing Logging: Ein/Ausblenden eines scrollenden JTextPane AWT, Swing, JavaFX & SWT 2
F Java JTextPane AWT, Swing, JavaFX & SWT 13
Saxony JTextPane - letzte Zeile löschen AWT, Swing, JavaFX & SWT 4
TheJavaKid LineWrap & WrapStyleWord in JTextPane AWT, Swing, JavaFX & SWT 3
G Zeilenabstand bei HTML-Texten in JLabel/JTextPane AWT, Swing, JavaFX & SWT 7
O Swing Xml highlightning mit JTextPane und Regular expressions AWT, Swing, JavaFX & SWT 5
J JTextPane Alignment AWT, Swing, JavaFX & SWT 6
Y entfernten String einer JTextPane per DocumentListener AWT, Swing, JavaFX & SWT 5
B Ein großes JTextPane komplett drucken AWT, Swing, JavaFX & SWT 2
7 Latex/MathML Code in JTextPane AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben