Wie scrollt man zwei JTextPane's?

8

Ich bin ein Swing Novize mit NetBeans. Ich möchte zwei nebeneinander liegende JTextPane vertikal scrollen. Das Scrollen sollte synchronisiert und durch eine einzige Bildlaufleiste erfolgen.

Wenn ich JTextPanes vom NetBean-Designer hinzufüge, werden sie automatisch in ein JScrollPane eingefügt, sodass sie unabhängig voneinander scrollen können. Ich habe die umschließenden Bildlauffenster gelöscht und sie stattdessen in JPanel eingefügt, so dass das JPanel der Client eines einzelnen JScrollPane sein kann. Dies scheint zu funktionieren, außer dass, wenn die JTextPanes sehr lang sind, sie über das Ende des JPanel hinausgehen. Ich kann das Panel und beide Textbereiche zu einem bestimmten Punkt scrollen. Wenn ich den Boden erreiche, kann ich einen Cusor in einen der Textfelder und einen Pfeil nach unten über mein Sichtfeld legen.

Hier ist Code von meiner Hauptmethode. Ich habe das Layout von etwas kopiert, das vom NetBeans-Designer erstellt wurde.

%Vor%

Hier ist ein Bild, das meine Implementierung der ersten Antwort zeigt, wo die Textbereiche nicht auf den horizontalen Anzeigebereich beschränkt sind.

Und dieses Bild zeigt die Textbereiche, die im horizontalen Anzeigebereich begrenzt sind, aber dieses Beispiel hat das ursprüngliche Problem, nicht vertikal zu scrollen, wenn die Textbereiche sehr lang sind.

    
mikeatv 16.06.2011, 22:13
quelle

2 Antworten

14

Ein Trick, den ich zuvor benutzt habe, ist die Verwendung von zwei JScrollPanes, das Ausblenden der vertikalen Bildlaufleiste für das linke Fenster und das Festlegen des Modells für das Modell des rechten Bildlauffensters. Auf diese Weise aktualisiert der Benutzer beim Scrollen der rechten Bildlaufleiste beide Bildlauffenster, da sie dasselbe Modell verwenden. Hier sehen Sie ein Beispiel mit zwei synchronisierten horizontalen Bildlaufleisten am unteren Rand:

%Vor%

Beachten Sie, dass es möglicherweise nicht so gut funktioniert, wenn Ihre JTextPanes unterschiedliche Größen haben (ich habe es nicht ausprobiert, aber meine beste Vermutung ist, dass es Probleme verursachen würde)

Sie können das Scrollen mit dem Mausrad auch dadurch korrigieren, dass Sie Rad-Ereignisse vom linken Bildlauffenster auf das rechte Bildfenster umleiten:

%Vor%     
Kevin K 16.06.2011, 23:13
quelle
4

Wenn Sie für Ihre% co_de ein GridLayout verwenden % und umschließt es dann mit JTextPane , die Bildlaufleiste wird für beide JTextPanes verwendet, da JScrollPane in gleich große Rechtecke aufgeteilt wird.

So etwas sollte funktionieren (Getestet auf Java 6)

%Vor%

Wenn Sie den obigen Ansatz verwenden, wird beim Ändern von Text in GridLayout die Dimension angezeigt, und die Bildlaufleiste wird angezeigt. Wenn sie verwendet wird, werden die beiden Komponenten durchgeblättert. Wenn der Änderungstext über eine Komponente hinausgeht, wird nach unten geblättert, damit Ihre Eingabe sichtbar wird.

Hoffe das hilft!

    
Mohamed Mansour 16.06.2011 22:41
quelle

Tags und Links