Einem Textarea einen Scrollbalken hinzufügen

Hallo Leute,

ich versuche gerade meiner Textarea einen Scrollbalken hinzuzufügen.

klappt nicht :frowning:

Kann jemand meinen Denkfehler erkennen!??

public static void main(String[] args) {

		JFrame meinFrame = new JFrame("Mein Frame");
		meinFrame.setLayout(null);
		meinFrame.setBackground(new Color(220,220,220));
		meinFrame.setSize(500,400);
		
		JTextArea textArea = new JTextArea("Leer");
		textArea.setLineWrap(true);
		textArea.setWrapStyleWord(true);
		textArea.setLayout(null);
		textArea.setBounds(100, 60, 240, 240);		
		
		JScrollPane scrollBalken = new JScrollPane();
		
		textArea.add(scrollBalken);

		
		meinFrame.add(textArea);		
		meinFrame.setVisible(true);

		
	}

Auch diese Variante funktioniert nicht.

public static void main(String[] args) {

		JFrame meinFrame = new JFrame("Mein Frame");
		meinFrame.setLayout(null);
		meinFrame.setBackground(new Color(220,220,220));
		meinFrame.setSize(500,400);
		
		JTextArea textArea = new JTextArea("Leer");
		textArea.setLineWrap(true);
		textArea.setWrapStyleWord(true);
		textArea.setLayout(null);
		textArea.setBounds(100, 60, 240, 240);		
		
		JScrollPane scrollBalken = new JScrollPane(textArea);
		
		meinFrame.add(scrollBalken );		
		meinFrame.setVisible(true);
		
	}

Es funktioniert alles soweit. Nur der Scrollbalken erscheint einfach nicht.

Danke
Besten Gruß

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);

    }
}

Danke Dir :slight_smile: