Okay, das ist meine Meinung über das Problem ... (Nette Frage allerdings)
Es gibt eine kleine Überlegung, die Sie mit dieser Lösung haben müssen. Es wird teilweise angezeigte Zeilen zurückgeben.
%Vor%Interessante Frage, die mich eine Weile beschäftigt hat, aber ich denke, ich habe eine recht gute Antwort. Aber es könnte bessere Wege geben. Fühlen Sie sich frei zu kommentieren, um die Antwort zu verbessern.
Stategy:
Also, meine Idee ist, dass wir vom sichtbaren Rechteck ausgehen sollten. Basierend darauf können wir herausfinden, was der erste sichtbare vertikale Versatz ( getVisibleRect().y
) und das Ende des sichtbaren vertikalen Versatzes ( getVisibleRect().y+getVisibleRect().height
) ist. Sobald wir das haben, können wir anhand der Höhe der Schriftart bestimmen, welche Zeilen sichtbar sind.
Der zweite Teil ist herauszufinden, was diese Zeilen enthalten. Hier verwende ich Utilities
mit getRowStart()
und getRowEnd()
kommt ins Spiel.
Hier ist ein Beispielcode für das, was ich detailliert habe (das Ergebnis wird an die Konsole ausgegeben, wenn Sie die Größe des Rahmens ändern oder den Textbereich scrollen):
%Vor% Wenn Sie auch eine horizontale Bildlaufleiste haben, sollten Sie in der Lage sein, horizontale Verschiebungen mit FontMetrics.stringWidth()
zu berechnen.
Tags und Links java user-interface swing jtextcomponent