Swing Tab in JTabbedPane

Dit

Bekanntes Mitglied
Hallo Forum,

ich habe folgendes Problem,

ich lade mehrere Tabs in eine JTabbedPane, wenn die Leiste von der breite her voll ist, öffnet sich eine JScrollpane, jedes weitere Tab was ich jedoch hinzufüge wird natürlich angezeigt, aber die Scrollpane bewegt sich nicht weiter. Ich bekomme die Pfeile nach < | > die mir zwar sagen das es weiter geht, aber ich würde mir wünschen das sich die Scrollpane mit den weiter öffneten Tabs mitläuft.

Habe gerade mal diverese Methoden durchgeschaut, konnte aber nichts finden was mir weiter hilft.

Die Frage nun: Gibt es dafür schon etwas (in Scrollpane/ JTabbedPane) oder muss ich sowas mit einem Listener programmieren.

Danke und Gruß
 
Du redest von dem Fall, dass es so viele Tabs gibt, dass sie nicht alle nebeneinander passen? Dafür hat die JTabbedPane die LayoutPolicy (
Code:
setTabLayoutPolicy(int)
). Hier kann man sagen, ob es mehrere Reihen an Tabs geben soll (findet man oft in Windows), oder ob kleine Scrolltasten erscheinen sollen (der Standard), mit denen man Blättern kann.
Dass die JTabbedPane in eine JScrollPane kommt und somit der gesamte Bereich scrollbar wird, ist eine unübliche Lösung.

Aber zu deinem Problem: Du kannst einer JTabbedPane mit
Code:
setSelectedIndex(int)
jederzeit - z.B. auch nach dem Hinzufügen - sagen, was das aktive Tab sein soll.
 
Du redest von dem Fall, dass es so viele Tabs gibt, dass sie nicht alle nebeneinander passen? Dafür hat die JTabbedPane die LayoutPolicy (
Code:
setTabLayoutPolicy(int)
). Hier kann man sagen, ob es mehrere Reihen an Tabs geben soll (findet man oft in Windows), oder ob kleine Scrolltasten erscheinen sollen (der Standard), mit denen man Blättern kann.

Korrekt, da wir keine TabLayoutPolicy gewählt haben, wird wie du sagst, der Standard benutzt es scheinen kleine Scrolltasten. - Auch soweit alles in Ordnung.


Dass die JTabbedPane in eine JScrollPane kommt und somit der gesamte Bereich scrollbar wird, ist eine unübliche Lösung.

Damit meinte ich genau die Scrolltasten die erscheinen, ich packe es nicht nochmal extra in eine JScrollpane.

Aber zu deinem Problem: Du kannst einer JTabbedPane mit
Code:
setSelectedIndex(int)
jederzeit - z.B. auch nach dem Hinzufügen - sagen, was das aktive Tab sein soll.

Diese Methode wird ebenalls bei mir verwendet, das Aktive Tab ist auch blau hinterlegt, jedoch erscheint es rechts (nicht mehr im Sichtbarkeitsbereich) des JScrollpane. Ich muss per Maus auf die kleine Scrolltaste klicken, um das Active Tab in der Scrollpane sichtbar zu machen..

hier 2 Bilder die das Beschreiben:

Sehen möchte ich meinen "Ancestor Tree" der inzwischen offen ist.
Man beachte das erste Tab ist "3D" das letzte ist mein "Ancestor Tree" der aber nicht sichtbar ist.

Im Bild "JTabbedPane2" habe ich nun auf die Scrolltaste geklickt mein Ancestor Tree kommt, und 3D (erstes Tab) verschwindet, dieses soll natürlich automatisch passieren!

hoffe man versteht mich, frage nicht umsonst hier, danach zu googeln ist unmöglich :/

EDIT: Ich müsste quasi das Event feuern, dass auch gefeuert wird, wenn ich per Maus auf die Scrolltaste klicke... da in diesem Fall immer nur rechts angehangen wird, kann ich sagen "bei öffnen eines neues Tabs, schieb die Leiste eins weiter nach links, vorher muss ich prüfen, ob natürlich die Scrollleiste bereits aktiv ist.
 
Zuletzt bearbeitet:
Ah ok, dann habe ich das anders verstanden. Ehrlich gesagt wundert es mich, dass er beim
Code:
setSelectedTab()
nicht mitscrollt, aber ich habe folgenden Bug-Bericht gefunden, der dein Problem untermauert. Jemand hat dort eine Lösung ...naja, einen Workaround... gepostet, der mir alles andere als intuitiv erscheint 😉
Vielleicht hilft es dir ja weiter...
 
Hallo,

dieser Bug ist ja schon etwas älter.

Aber wie dort beschreiben, geht es auch mit einem
Java:
SwingUtilities.invokeLater(new Runnable() {
	          public void run() {
	            DeinJTabbedPane.setSelectedIndex(x);
	          }
	      });

MfG
hansmueller
 
Hey,

erst mal danke für den Workaround, habe diesen gerade mal bei mir eingebaut, das Problem besteht aber weiterhin.

Ich werde mal noch ein wenig schauen, mich wundert jedoch, dass es dafür noch keine Lösung gibt.
Wie ich bereits geschrieben habe muss ich ja nur den klick auf den Scrollbutton ansteuern, wenn ich ein neues Tab hinzufüge.

Trotzdem danke dir. Falls ich noch was finden sollte, meld ich mich hier.

Grüße

EDIT: Beide Workarounds bringen bei mir nicht den gewünschten Effekt, bei dem letzteren Reagiert sie zwar anders, aber nicht so wie erwartet,das erste schiebt er aber beim zweiten mal verschwindet das nächste Tab wieder in der Scrollleiste
 
Zuletzt bearbeitet:

Zurück
Oben