mit DefaultStyledDocument die Caret-Position ändern?

rocknralle

Mitglied
hallo leute,
ich beschäftige mich seit kurzem mit dem DefaultStyledDocument und bleibe an folgender sache hängen:

im jeditorpane soll, sobald eine runde klammer eingetippt wird, eine geschlossene runde klammer erzeugt werden. das klappt ja soweit. nun möchte ich noch, dass die caret-position zwischen die beiden klammern neu gesetzt wird. habe schon einiges ausprobiert... aber nichts kluges. stehe gerade volle kanne aufm schlauch...
:bahnhof:


Java:
import javax.swing.*;
import javax.swing.text.*;

public class Test extends DefaultStyledDocument{

	private DefaultStyledDocument doc;
	private Element root;
	
	public Test(){
		doc = this;
		root = doc.getDefaultRootElement();
	}
	
	public void insertString(int offset, String str, AttributeSet a) throws BadLocationException{
		
		//Hier die Caret-Position zwischen die runden Klammern setzen
		if(str.equals("(")){
            str = "()";
        }
		
		super.insertString(offset, str, a);
	}
	
	public static void main(String a[]) {
		JFrame frame = new JFrame("() - Test");
		JEditorPane edit = new JEditorPane();
		 
		EditorKit editorKit = new StyledEditorKit(){
		       public Document createDefaultDocument(){
		           return new Test();
		       }
		 };
		 
		 edit.setEditorKitForContentType("text/java", editorKit);
		 edit.setContentType("text/java");
		  
		 frame.getContentPane().add(new JScrollPane(edit));
		 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 frame.setSize(200,100);
		 frame.setVisible(true);
	}
}

danke im voraus!
 
U

Unregistrierter

Gast
Übergebe doch den EditorPane und benutze die setCaretPosition Methode?
Ganz schlechte Idee, dann hat das Model eine Referenz auf die View...

aber generell mit dem DefaultStyledDocument lässt sich sowas nicht bewerkstelligen?
Nein, die Cursorposition ist ein Zustand in der Ansicht des Dokuments und nicht Teil des Dokumentes selber.
Anstatt die geschlossene Klammer im Dokument hinzuzufügen würde ich eher einen DocumentListener (oder sogar einen KeyListener um zwischen Usereingaben und Programmänderungen zu unterscheiden) verwenden. Damit löst du dein Problem hier und hast es auch einfacher dein Programm später um zusätzliche andere Hilfen zu erweitern.
 

rocknralle

Mitglied
Anstatt die geschlossene Klammer im Dokument hinzuzufügen würde ich eher einen DocumentListener (oder sogar einen KeyListener um zwischen Usereingaben und Programmänderungen zu unterscheiden) verwenden.

also sollte man besser die geschlossene klammer und die caret-position später per referenz steuern, so dass das document nur die reine "view-aufgabe" erledigt? habe ich das so richtig verstanden?
 
U

Unregistrierter

Gast
Ich weiß nicht was du mit "per Referenz steuern" meinst. So wie ich es oben beschrieben hab: mit einem Document oder KeyListener.
Nein dein DefaultStyledDocument ist offensichtlich dein Datenmodell.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Zeilenposition in JTextArea feststellen(ohne Caret) Java Basics - Anfänger-Themen 7
G Caret in Textfeld setzen Java Basics - Anfänger-Themen 3
L px und x-position Java Basics - Anfänger-Themen 4
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
J Itext-Paragraph Position ändern Java Basics - Anfänger-Themen 13
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
S suche nach varible POSITION ... fuer das pixel-maennchen Java Basics - Anfänger-Themen 4
I Eigenschaften von Position aus anderer Klasse übernehmen Java Basics - Anfänger-Themen 17
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
H Position verschieben der Elemtente im Array Java Basics - Anfänger-Themen 3
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
S Position eines Frames Java Basics - Anfänger-Themen 3
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
T Arrayposition um eine Position verschieben Java Basics - Anfänger-Themen 2
V Klassen Bestimmen Sie die erste und letzte Position an der ein 'c' steht? Java Basics - Anfänger-Themen 3
R Position einer Ziffer in einer Zahlenkette Java Basics - Anfänger-Themen 5
V Datentypen Position mit Int und Float berechen und ausgeben Java Basics - Anfänger-Themen 5
Z Wie Position eines Objekts in Liste herausfinden? Java Basics - Anfänger-Themen 15
C Position eines Zeichens in einem String ausgeben Java Basics - Anfänger-Themen 1
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
C [Greasmonkey] Maus Coursor position setzen Java Basics - Anfänger-Themen 1
I Int Array, Zahl an bestimmte position setzten Java Basics - Anfänger-Themen 2
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
O Position des Buttons wird nicht geändert.. Java Basics - Anfänger-Themen 6
H Cursor-Position bei Rechtsclick? Java Basics - Anfänger-Themen 2
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
S Maus Position Java Basics - Anfänger-Themen 6
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
S JSplitPane Divider Maximum Position Java Basics - Anfänger-Themen 5
W Position in ArrayList ermitteln Java Basics - Anfänger-Themen 4
M kurze frage: Ohne index.of position von string angeben Java Basics - Anfänger-Themen 16
M Input/Output position in temporären dateien kann nicht gesetzt werden Java Basics - Anfänger-Themen 3
E Y-Position der Maus nehmen Java Basics - Anfänger-Themen 5
V Position in einem Vektor Java Basics - Anfänger-Themen 3
M LinkedList aktuelle position Java Basics - Anfänger-Themen 3
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
M Fixe Position von GUI Komponenten ? Java Basics - Anfänger-Themen 9
B JMenu Position bestimmen Java Basics - Anfänger-Themen 7
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
TheKing Spieler Position mit Array vergleichen Java Basics - Anfänger-Themen 2
T Image Position erkennen Java Basics - Anfänger-Themen 6
L die Position von Suchtreffern von Lucene finden Java Basics - Anfänger-Themen 2
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
K Kreis mit neuer Position zeichnen Java Basics - Anfänger-Themen 3
S OOP Wie bei Spiel "17+4" eine Karte an bestimmte Position hinzufügen Java Basics - Anfänger-Themen 13
M Zufällige Position Java Basics - Anfänger-Themen 3
A Elemente 2er int[] auf Gleichheit und Position überprüfen Java Basics - Anfänger-Themen 7
M Position des BufferedReader Java Basics - Anfänger-Themen 6
J Programm-Fesnter Position Java Basics - Anfänger-Themen 4
O Maus / Pixel Position bei mir und bei anderen. Java Basics - Anfänger-Themen 8
F Position JTextField Java Basics - Anfänger-Themen 4
B aktuelle Position einer JTextArea ermitteln Java Basics - Anfänger-Themen 6
C Position eines Fensters bestimmen Java Basics - Anfänger-Themen 3
H problem mit button position Java Basics - Anfänger-Themen 4
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
M Array, Int-wert Ziffer je Position zuweisen Java Basics - Anfänger-Themen 3
B String vom Server nach Position... (erledigt) Java Basics - Anfänger-Themen 6
H Exception: illegal component position Java Basics - Anfänger-Themen 5
G Position eines Objekts auf Webseite herausfinden Java Basics - Anfänger-Themen 9
hdi Grösse & Position von JScrollBar Java Basics - Anfänger-Themen 28
G TrayIcon: Wie aktuelle Position des Icons erhalten? Java Basics - Anfänger-Themen 2
D Fensterrahmen und Position ändern. Java Basics - Anfänger-Themen 5
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
G Position Java Basics - Anfänger-Themen 7
R Position in ArrayList ermitteln Java Basics - Anfänger-Themen 5
R Element an Position in ArrayList checken Java Basics - Anfänger-Themen 4
D Dateizugriff - An bestimmter Position Lesen (Random Access) Java Basics - Anfänger-Themen 2
H Finde Position Java Basics - Anfänger-Themen 4
J mouseover Text => Bildanzeige an bestimmter Position.Wie Java Basics - Anfänger-Themen 2
B Position einer Ziffer im String bestimmen Java Basics - Anfänger-Themen 4
T Zeichen eines Strings an festgelegter Position einfügen Java Basics - Anfänger-Themen 8
J Jedes Element in 2 Arrays mit gleicher Position addieren Java Basics - Anfänger-Themen 12
C Absolute Cursor Position oder doch relative? Java Basics - Anfänger-Themen 4
L Gezielte Infos aus Datei holen - Suche nach Position/Wort Java Basics - Anfänger-Themen 22
M Servlet position bestimmen Java Basics - Anfänger-Themen 3
T aktuelle Position in einer Datei Java Basics - Anfänger-Themen 4
B String in ein RandomAccessFile einfügen (bestimmte Position) Java Basics - Anfänger-Themen 4
bernd An der Position des Cursors String einfügen Java Basics - Anfänger-Themen 11
C Position im Objekt-Stream Java Basics - Anfänger-Themen 2
G x-,y-position java-applet Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben