JTextArea auf JPanel in JScrollPane wird nicht korrekt skaliert

8

Ich möchte Folgendes erreichen:

%Vor%

Am nächsten komme ich mit folgendem (Pseudo-) Code:

%Vor%

Immer, wenn ich Komponenten hinzufügen möchte, werden sie dem inneren Container hinzugefügt:

%Vor%

.... usw.

Ich stehe vor folgenden Problemen:

Ich lasse die Layout-Manager auf alle Elemente der Benutzeroberfläche achten. Daher bevorzuge ich keine .setxxSize () - Methode. Ein JTextArea, der mit viel Text belegt ist, nutzt den gesamten benötigten Platz (vertikal und horizontal). Was völlig in Ordnung ist. Immer wenn der Rahmen verkleinert wird, wird der JTextArea wachsen, was immer noch völlig in Ordnung ist. Aber wenn ich den Rahmen verkleinere, passt sich die JTextArea nicht entsprechend an. Daher erscheint eine horizontale Bildlaufleiste, die ich jedoch vermeiden möchte. Ich möchte, dass Benutzer nur vertikal scrollen.

Hat jemand gute Tipps? Danke!

BEARBEITEN:

SSCCE:

%Vor%

Immer wenn Sie den Rahmen horizontal verändern, verschwindet der Text immer dann, wenn der Rahmen weniger groß wird. Eine horizontale Bildlaufleiste wird angezeigt, aber seit:

%Vor%

Text verschwindet einfach. Die JTextArea sollte entsprechend angepasst werden

    
Velth 03.04.2013, 09:03
quelle

4 Antworten

16

Ok, das Problem ist, dass JPanel nicht in ein JScrollPane eingebettet werden möchte.

Damit eine Komponente mit JScrollPane "schön spielt", muss Scrollable implementiert werden. Wenn Sie gerade JTextArea in JScrollPane hinzugefügt haben, funktioniert es genau so, wie Sie es wünschen.

Anstatt ein JPanel zu verwenden, um alle Ihre JTextAreas zu speichern, müssen Sie eine kleine benutzerdefinierte Klasse erstellen, die JPanel erweitert und Scrollable implementiert.

Ich habe Ihr Beispiel neu geschrieben und es hier eingefügt: Ссылка , damit Sie den gesamten Code sehen können. Das scrollbare JPanel sollte so aussehen:

%Vor%

Prost!

    
Kylar 03.04.2013, 12:08
quelle
1

Sie sollten einen Viewport für Ihr scrollPane hinzufügen:

%Vor%     
joey rohan 03.04.2013 09:48
quelle
0

Verwenden Sie

%Vor%

Es umschließt den Text und vermeidet horizontale Scrollfenster.

Und versuchen Sie es GridBagLayout. Verwenden Sie weightx und weighty. Es wird sich um Größesprobleme kümmern

    
Mohan Raj B 03.04.2013 09:17
quelle
0

JTextArea wird nie verkleinert, wenn der Zeilenumbruch aktiviert ist

Ich habe eine JTextArea in einem JPanel mit Gridlayout, das dieses Problem hat. Meine wurde gelöst, indem einfach die TextArea-Mindestgröße festgelegt wurde.

%Vor%     
bob 11.04.2017 13:30
quelle