2016-10-15 8 views
-2

Ich erstelle einen Texteditor, und ich möchte ausgewählte Zeilen zählen, wie im Bild unten.JTextArea - ausgewählte Zeilen zählen

Dies ist die Schnittstelle, die ich bis jetzt erstellt habe.

enter image description here

Zum Beispiel, wenn diese zwei Linien ausgewählt sind, ich brauche eine Art und Weise Anzahl von ausgewählten Zeilen zu speichern (2 in diesem Fall) in eine Variable. Gibt es eine Möglichkeit, das zu tun?

Wenn Sie ein Stück Code zu sehen brauchen, werde ich hinzufügen.

+0

das ist nicht nah an dem, was ich vorgeschlagen habe !!! Ich habe vorgeschlagen, die "Zeilennummern" zu subtrahieren, nicht die Anfangs-/Endversätze des ausgewählten Textes. Wo haben Sie die Methode im Offset auf "Vergangenheit" geändert? – camickr

+2

* "JTextField zählt ausgewählte Zeilen" * Ein Textfeld hat immer nur eine einzelne Zeile, also ist die Anzahl der Zeilen, die alle oder teilweise ausgewählt haben, entweder 0 oder 1. Ich nehme an, Sie meinten eigentlich eine 'JTextArea', aber Erwartungen kann in Wissen umgewandelt werden, wenn ein [mcve] gepostet wird. Bitte poste einen MCVE in zukünftigen Fragen. –

+0

@AndrewThompson überprüfen Titel wieder bitte, es sagt "JTextArea", nicht "JTextField" – Linksx

Antwort

3

Überprüfen Sie die getLineAtCaret() Methode gefunden in Text Utilities. Dies wird die Zeilennummer im Caret bekommen (was hier nicht hilft).

Sie müssen also den Code ändern, um einen Offset als Parameter zu erhalten. Dann können Sie die Werte getSelectionStart() und getSelectionEnd() der Textkomponente übergeben und diese Werte verwenden, um die Zeilennummer zurückzugeben. Wenn Sie dann die Zeilennummer jedes Elements kennen, können Sie die Anfangszeilennummer von der Endzeilennummer subtrahieren, um die Anzahl der ausgewählten Zeilen zu erhalten.

Sie können auch den Text Component Line Number Blog-Eintrag für eine Zeile Nummer Komponente für Sie Editor verwenden.

+0

Ich habe darüber nachgedacht, wie Sie das umsetzen, was Sie gesagt haben, und ich denke, dass ich einen Weg gefunden habe. Bitte überprüfen Sie die EDIT es um zu sehen, ob es richtig ist? In den meisten Fällen bekomme ich die richtige Anzahl an Zeilen, aber manchmal bekomme ich einen falschen Wert, wenn ich zum Beispiel 4 Zeilen auswähle, heißt es, dass ich 3 oder 5 Zeilen ausgewählt habe, aber nicht immer. – Linksx