# Scrollbar in einem JTabbedPane



## space (7. Apr 2009)

Hallo Leute,

hört sich vielleicht lustig an, versuche aber schon den halben Tag, eine Scrollbar in einen meiner Tabs zu integrieren. Ich bekomm's einfach nicht hin(Java Anfänger).

Also hier mal der Code:
[HIGHLIGHT="Java"]public class Test extends JFrame {

    private static JTabbedPane tabPane = new JTabbedPane();
    private static JPanel tab1 = new JPanel();
    private static JPanel tab2 = new JPanel();
    private static JPanel tab3 = new JPanel();
    private static JPanel tab4 = new JPanel();


    public Test() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationByPlatform(true);
        this.setSize(800, 600);
        this.setTitle("Akte");

        tabPane.addTab("Auflisten", tab1);
        tabPane.addTab("Durchblättern", tab2);
        tabPane.addTab("Hinzufügen", tab3);
        tabPane.addTab("Verändern", tab4);


        tab1.setLayout(new BoxLayout(tab1, BoxLayout.Y_AXIS));

        this.add(tabPane, BorderLayout.CENTER);
        this.setVisible(true);
    }[/HIGHLIGHT]
Der Platz im ersten Tab reicht für den Inhalt nicht, deswegen brauche ich eine Scrollbar. Ich habe schon alles mögliche versucht, mit JScrollPane usw.. Habe ich schon in meinem Code was falsch gemacht?

Ich hoffe auf eure Hilfe :rtfm:

Beste Grüße


----------



## Ebenius (8. Apr 2009)

Aus Deinem Quelltext und Deiner Beschreibung nicht ersichtlich: Wo liegt das Problem, wenn Du bspw. in Zeile 16 das schreibst? [Highlight=Java]tabPane.addTab("Auflisten", new JScrollPane(tab1));[/Highlight]
Ansonsten kann ich Deinem Quelltextausschnitt erstmal keine Fehler erkennen, außer, dass die ganzen Members (tab1, tab2, ...) _static_ sind. Das sollte mit dem Problem nichts zu tun haben. Trotzdem ist das falsch. Die Panels sollen ja der Test-Instanz gehören, nicht der Test-Klasse.

Ebenius


----------



## space (8. Apr 2009)

Es geht!!!!
Du glaubst nicht, wie dankbar ich dir bin!!!! 

Aber noch was, warum funktioniert setBounds bei einem TextField im Tab nichtmehr?

Beste Grüße =)


----------



## Ebenius (8. Apr 2009)

Component.setBounds(...) benutzt nur der LayoutManager. Nur wenn kein LayoutManager gesetzt ist, funktioniert es, die Position und Größe einer Komponente explizit zu setzen. Das lässt man aber lieber sein. Ansonsten muss man sich selbst darum kümmern, wie die Komponenten angeordnet werden sollen, wenn 
das Fenster verkleinert / vergrößert wird,
die Schriftgrößeneinstellungen anders sind als auf Deinem System,
ein Araber gern rechts nach links lesen will,
die Texte sich später ändern (Ausdruck angepasst, Tippfehler korrigiert, oder Mehrsprachenunterstützung),
...
Keinen LayoutManager zu benutzen heißt: Die Applikation sieht nur auf einem System gut aus. Auf dem Entwicklungssystem.

Herangehensweise: Es gibt verschiedene fertige LayoutManager. Man kann die auch selbst schreiben, davon rate ich einem Anfänger aber ab. Diese LayoutManager sind im Java SE bereits dabei. Damit kann man fast alle normalen Anforderungen umsetzen: 
BorderLayout (braucht man ständig)
FlowLayout (oft)
GridLayout (oft)
GridBagLayout (geteilte Meinung. Sehr nützlich, wenn man's mal verstanden hat; siehe: [thread=64702]FAQ: Das GridBagLayout[/thread])
GroupLayout (neu in Java 6; scheint sehr nützlich)
BoxLayout (seltener)
CardLayout (seltener)
OverlayLayout (selten; meist nur in Verbindung mit JLayeredPane)
Details gibt's im Sun Java™ Tutorial: Using Layout Managers.

Ebenius


----------



## space (8. Apr 2009)

Vielen Dank für deine Mühe Ebenius!


----------

