go to Line

billbill

Mitglied
Hi Leute,

also ich möchte eine go to Line Fkt. implementieren und zwar in einem JTextPane.

Meine Überlegung ist mittels einer for Schleife jedes Zeichen des JTextPane einzeln durchzugehen und so alle Zeilenumbrüche '/n' zu finden. Dort mittels getCaretPosition deren Position zwischen zu speichern und mittels einer weiteren for schleife eine Indexnummer zu jeder Position zu vergeben.
Mittels Aufruf der Indexnummer wird ein setCaretPosition+1 auf diese Position angewendet und man kommt auf die entsprechende Zeile.

Meine Frage ist, ob es eine Methode gibt um die Positionen der Zeilenumbrüche zu finden!?
Denke ich vieleicht zu kompliziert? :eek:

Danke im voraus.

MfG billbill
 

Timothy Truckle

Top Contributor
Meine Frage ist, ob es eine Methode gibt um die Positionen der Zeilenumbrüche zu finden!?
Denke ich vieleicht zu kompliziert? :eek:
Wahrscheinlich ;) :
Code:
getText().split("\n")
Dann hast Du die Zeilen als Elemente des Arrays.
Natürlich musst Du dann die Längen der einzelnen Zeilen bis zur Zielzeile zusammenrechnen, um die neue Cursorposition zu finden...

bye
TT
 
T

tröööt

Gast
naja ... könnte man machen ... aber MAC verwendet glaube ich immer noch "\r" für einen umbruch ... man sollte also eher n regex auf "[\r|\n]" machen ...
 

faetzminator

Gesperrter Benutzer
tröööt, wenn dann wär's [c][\r\n][/c].
Da man aber grundsätzlich [c]\n[/c] (Unix), [c]\r[/c] (alte Macs) und [c]\r\n[/c] (Win) supporten sollte, wär der Regex dementsprechend [c]\r?\n|\r[/c].
 

billbill

Mitglied
Danke für die Antworten. Das mit dem Zeilenumbruch ist mir schon klar, das muss ich auch noch machen. Ich wollte halt die Fkt. erstmal hinkriegen. Ich habe mich mal mit dem split auseinandergesetzt aber irgendwie funktioniert das nicht so wie ich mir das vorstelle

Das habe ich geschrieben:

Java:
    public int gotoooline(JTextPane text,int ZeilenNr){
        
        int ZeilenumbruchPosition=0;
        
        for(int i=1; i<=ZeilenNr; i++){
            
            String zeilen[];
            String currectString;
            zeilen=text.getText().split("/n");

            
         for(int StringNR=0; StringNR<=zeilen.length; StringNR++){
             currectString=zeilen[StringNR];
            for(int j=0; j<=currectString.length();j++){                
                text.setCaretPosition(ZeilenumbruchPosition+j);
                if (j==currectString.length()){
                    ZeilenumbruchPosition =+ text.getCaretPosition();
                    }
                }
            
            }
        }
            return ZeilenumbruchPosition;
    
    }

Wenn ich z.B. einen text:
1234
123
12
1
möchte ich mit folgenden

Java:
            String zeilen[];
            zeilen=text.getText().split("/n");

zeilen[0]=1234
zeilen[1]=123
zeilen[2]=12
zeilen[3]=1

erhalten.

Leider klappt das nicht.
 
S

SlaterB

Gast
wie in diesem Thread zu lesen, allgemein klar oder sonst zu überprüfen ist es \n, nicht /n ..

Tipp: lasse vorerst JTextPane, vielleicht noch Testeingaben bei jeder Ausführung weg,
teste direkt mit einem im Programm vorgegebenen String, darin dann eben auch die \n für Umbruch,
und auch sonst alles vorgeben

einfach Run klicken und das Programm muss laufen,
ob die richtige Position im JTextPane gesetzt wird kann man damit freilich nicht testen,
aber eben die reinen Berechnungen, was kommt hier als int-Rückgabewert raus, wie wird das Array zerlegt usw.

tausende System.out.println() für alle Zwischenstände helfen auch, mitzubekommen, ob etwas und was genau passiert
 

billbill

Mitglied
wie in diesem Thread zu lesen, allgemein klar oder sonst zu überprüfen ist es \n, nicht /n ..

Tipp: lasse vorerst JTextPane, vielleicht noch Testeingaben bei jeder Ausführung weg,
teste direkt mit einem im Programm vorgegebenen String, darin dann eben auch die \n für Umbruch,
und auch sonst alles vorgeben

einfach Run klicken und das Programm muss laufen,
ob die richtige Position im JTextPane gesetzt wird kann man damit freilich nicht testen,
aber eben die reinen Berechnungen, was kommt hier als int-Rückgabewert raus, wie wird das Array zerlegt usw.

tausende System.out.println() für alle Zwischenstände helfen auch, mitzubekommen, ob etwas und was genau passiert

ja die prints hab ich ja bei mir im prog, ich habe die nicht reingestellt damit das etwas übersichtlicher ist.
omg, ich bin echt dumm, ich dachte schön wie es sein kann das nicht gesplitet wird, danke :D ich schau mal weiter
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
Meeresgott 2D-Grafik Bresenham's line algorithm Allgemeine Java-Themen 37
M Line-Fehler Allgemeine Java-Themen 8
G GUI-basiertes Java-Program in Command-line Version umwandeln Allgemeine Java-Themen 1
B Input/Output BufferedWriter/Reader replace line Allgemeine Java-Themen 6
F TrueType-Font in Single-Line-Font wandeln Allgemeine Java-Themen 0
G UUencoding bring Fehlermeldung: No beginn line / Missing 'end' line Allgemeine Java-Themen 0
M Swing java command line abfangen Allgemeine Java-Themen 8
M Java line separator (evtl nur in TextComponents...) Allgemeine Java-Themen 5
K Command Line Argument Interpreter für komplexe Strukturen Allgemeine Java-Themen 9
D welchen line brak benutzt ein geg. textfile Allgemeine Java-Themen 3
M MessageFormat : multi line Allgemeine Java-Themen 10
U Serach in Line Allgemeine Java-Themen 2
X Audio-Eingabegerät auswählen (MIC oder LINE-IN) Allgemeine Java-Themen 11
C Line-In Signalstärke Visualisieren Allgemeine Java-Themen 2
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
P command line parameter auswerten Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben