/ / JTextArea verschwindet, wenn JScrollPane hinzugefügt wird - Java, Swing, Layout-Manager, Null-Layout-Manager

JTextArea verschwindet beim Hinzufügen von JScrollPane - Java, Swing, Layout-Manager, Null-Layout-Manager

Ich bin ein Amateur in Java Swing und kann das folgende Problem nicht in den Griff bekommen.

Sobald ich hinzufüge JScrollPane zum JTextAreaist keine der Komponenten in der GUI sichtbar.

Ich weiß, dass ich keinen Textbereich hinzufügen sollte, wenn ich seine Schriftrolle hinzufüge (ich habe diese Zeile auskommentiert), aber es hilft nicht.

    frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

JTextArea textArea = new JTextArea();
textArea.setBounds(213, 11, 186, 240);
// NOT CALLING       frame.getContentPane().add(textArea);
scroll = new JScrollPane(textArea);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

frame.getContentPane().add(scroll);

Es hat bei mir nur funktioniert, wenn ich es benutzt habe BorderLayout, aber das ist nicht das Layout, das ich verwenden möchte.
Mein Ziel ist es, mehrere Textbereiche im Rahmen zu platzieren.

Was mache ich, um einen Textbereich mit Blättern anzuzeigen, sagen wir mit AbsoluteLayout (null)

Antworten:

4 für die Antwort № 1

Ihr Rahmen verwendet ein Null-Layout.

Sie fügen das Bildlauffenster dem Rahmen hinzu, aber die Größe des Bildlauffensters ist (0, 0), sodass nichts zu malen ist.

Verwenden Sie kein Null - Layout.

Insteasd verwenden Sie einen Layout-Manager. Der Layout-Manager verwaltet dann die Größe und Position der einzelnen Komponenten, sodass dies nicht erforderlich ist. Versuchen Sie nicht, das Rad neu zu erfinden. Die Layout-Manager wurden aus einem bestimmten Grund erstellt, und es gibt absolut keinen Grund, ein Null-Layout zu verwenden bei Verwendung eines JScrollPane / JTextArea.

textArea.setBounds(213, 11, 186, 240);

Übrigens hat dieser Code keine Auswirkungen, wenn Sie den Textbereich (oder eine beliebige Komponente) zum Bildlauffenster hinzufügen. Das Bildlauffenster verwendet dann seinen eigenen Layout-Manager und überschreibt diese Werte.

JTextArea textArea = new JTextArea();

Verwenden Sie keinen solchen Code, um den Textbereich zu erstellen. Verwenden Sie stattdessen Folgendes:

JTextArea textArea = new JTextArea(5, 30);

Jetzt kann der Textbereich seine bevorzugte Größe bestimmen und diese Informationen können von den Layout-Managern verwendet werden.