2017-02-06 6 views
-1

Ich habe ein Scrollpanel in einem Panel und ein Textbereich unter dem Scrollpane. jtextarea append funktioniert nichtjTextArea Append funktioniert nicht

Ich verwende dies für die Protokollierung.

JPanel panel_1 = new JPanel(); 
tabbedPane.addTab("Logs", null, panel_1, null); 
panel_1.setLayout(null); 

JScrollPane scrollPane_1 = new JScrollPane(); 
scrollPane_1.setBounds(0, 0, 672, 303); 
panel_1.add(scrollPane_1); 

JTextArea jTextArea = new JTextArea(100,200); 
jTextArea.setEditable(false); 
jTextArea.setVisible(true); 
scrollPane_1.add(jTextArea); 
jTextArea.append("Hello"); 

Antwort

3
scrollPane_1.add(jTextArea); 

Fügen Sie keine Komponenten zu einem scrollpane. Die Komponente muss dem Ansichtsfenster der Bildlaufleiste hinzugefügt werden.

Der einfachste Weg dies zu tun ist, verwenden:

JTextArea jTextArea = new JTextArea(100,200); 
jTextArea.setEditable(false); 
jTextArea.setVisible(true); 
//scrollPane_1.add(jTextArea); 
jTextArea.append("Hello"); 

JScrollPane scrollPane_1 = new JScrollPane(jTextArea); 
scrollPane_1.setBounds(0, 0, 672, 303); 
panel_1.add(scrollPane_1); 

Der andere Weg, dies zu tun zu verwenden ist:

JScrollPane scrollPane_1 = new JScrollPane(); 
scrollPane_1.setViewportView(jTextArea); 

Beachten Sie auch, Sie sollten, wenn Sie einen Textbereich die Parameter erstellen sind Zeilen/Spalten, keine Pixel, also sind deine Werte zu groß. Ich würde vorschlagen, etwas wie:

//JTextArea jTextArea = new JTextArea(100,200); 
JTextArea jTextArea = new JTextArea(30,10); 

Schließlich sollten Sie nicht die Grenzen der Scrollscheibe setzen. Swing wurde für die Verwendung mit Layout-Managern entwickelt. Der Layout-Manager wird die Größe des scrollpane basierend auf der Größe des Textbereichs bestimmen:

//scrollPane_1.setBounds(0, 0, 672, 303); 
+0

Kann ich jTextArea.append nach panel_1.add (scrollPane_1) den Text dynamisch anmelden? –