Mit
meinFrame.setLayout(new GridLayout(1,1));
funktioniert es. Der Scrollbalken erscheint dann auch erst, wenn es notwendig ist (d.h. wenn man ein paar Zeilen eingetippt hat).
Allgemein: null-Layout ist meistens falsch. In einem normalen GUI verwendet man üblicherweise LayoutManager, und keine manuellen “setBounds”-Aufrufe.
Man kann auch eine “Scoll Bar Policy” setzen, so dass der Scollbalken immer angezeigt wird, auch, wenn er gar nicht nötig ist (dann ist er halt ausgegraut).
Zur Vermeidung von Verwechslungen sollte man das Ding auch nicht “scrollBalken” nennen, denn es ist eine ScollPane (und keine ScrollBar).
Das GUI sollte auf dem Event-Dispatch-Thread erzeugt werden.
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class Test
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
createAndShowGUI();
}
});
}
private static void createAndShowGUI()
{
JFrame meinFrame = new JFrame("Mein Frame");
meinFrame.setLayout(new GridLayout(1, 1));
meinFrame.setBackground(new Color(220, 220, 220));
meinFrame.setSize(500, 400);
JTextArea textArea = new JTextArea("Leer");
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
meinFrame.add(scrollPane);
meinFrame.setVisible(true);
}
}