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
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!
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
Tags und Links java swing awt jscrollpane jtextarea