CardLayout Panel maximiert Scroll

Ich stehe bei jedem meiner Programme vor dem gleichen Problem.

Ich habe Links ein Menu, schön gross weil Touch.

In der Mitte sind die verschiedenen Panel in einem CardLayout und werden so umgeschaltet.

Nun ist jedoch jedes Panel so Gross wie das grösste, und das stört mich extrem. Wie löst ihr solche Geschichten?

was meinst du mit mehreren Panel, eins je CardLayout oder die tatsächliche Aufteilung einer Card, eines Bildschirms?
wenn man da zwei Panel haben will, dann layoutet man sie so wie sie sein sollen,
das ist doch nicht allgemein zu beantworten,

soll das erste das obere Drittel der Fläche bekommen, das zweite die unteren zwei Drittel, dann wird es umgesetzt, sonst nicht,
mit Layouts geht das, dafür sind sie da, GridLayout eher nicht weil Gleichmacher

mehr Details nötig…

Okey, Ich habe 10 Panels. Jedes dieser Panels hängt am Cardlayout welches im Hauptframe mit Borderlayout im Center sitzt.

Angezeigt wird immer nur ein Panel, je nach Button druck.

Ok, den ist-zustand hab ich denke ich verstanden. Aber was daran verkehrt sein soll erschließt sich mir immernoch nicht. Vllt gehst du mal auf den Sollzustand ein.

@headnut
was genau soll passieren, wie sich eine Ansicht von der anderen unterscheiden?
das Umschalt-Card-Ding nimmt einen bestimmten Platz in exakten PixelxPixel ein, daran ist nicht zu rütteln,
du kannst also kaum in einer der Cards die untere Hälte noch mit weiterem Platz für ein anderes Panel nehmen, was also aus dem Card-Platz hinausgeht,

der definierte Card-Platz ist fest, darin kannst du aber beliebig agieren,
ein oberstes Panel X wird sicherlich den vollen Platz einnehmen, aber das ist nicht schlimm,
wenn du willst kannst du ein zweitetes Panel Y in X einfügen, welches nur den halben Platz braucht, der Rest bleibt leer

aber das bringt nur immer mehr Detailfragen, wie erkennt man leeren Platz gegenüber vollen, haben die Panel X oder Y einen Rand/ Border, hat die Card-Komponente selber sichtbare Ecken,

nach
http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
eher weniger im Gegensatz zu TabbedPane

also ich frage umso mehr nach Beispielen, Skizzen, Informationen, was auch immer


und ein Hinweis: sollte ich nochmal posten, dann werde ich nicht mehr Zeilen verwenden als du zuvor schreibst,
wenn man sich deine letzten 2 anschaut, wäre dieses Posting hier schwierig geworden :wink:

sowas dann also vielleicht nicht mehr möglich, überlege was du möchtest, wieviel du investierst,
vielleicht aber eh nur unnötiges Blahblah von mir :wink:
(edit: Tomate_Salat schreibt ja auch dasselbe in einer Zeile)

Das war mit dem IPhone geschriebe, daher einwenig kurz. Beim unten angehängten Printscreen sieht man das dass Panel einen Scrollbalken bekommt, obwohl es gar nicht nötig wäre, da der Inhalt nicht so gross ist.

Dies geschieht weil ein anderes Panel im Cardlayout grösser ist und somit dieser Platz einfach gegeben ist.

Ich will nichts untereinander oder neben einander. Es wird immer nur ein Panel angezeigt im Cardlayout. Die Frage ist gibt es eine alternative zum Cardlayout, damit jedes Panel im seine eigene Grösse hat und diese auch anzeigt. Mit Border und so.

Das CardLayout befindet sich in einem Frame und dort im BorderLayout.CENTER. Die Panels werden nacheinander angezeigt

das macht es natürlich interessant,
toll wäre ein minimales Beispielprogramm mit großen und anderen Panel,
Inhalt wie gesagt minimal, der Balken links spielt sicher keine Rolle,

ich schwanke noch es gar selber zu basteln

Handy-Postings gehören freilich verboten, man sollte schon am PC sitzen, Code schicken können, ausprobieren usw. :wink:

edit: in jedem Fall kann man doch wohl erreichen, dass kein Panel größer als der sichtbare Bereich wird,
JScrollPanel dort einfügen wo Daten groß werden können,
aber nur für eine Standardgröße, nicht wenn man das JFrame beliebig klein zieht

noch paar Suchergebnisse


ein Link zeigt auf altes Forum,
„haben alle Panels von CardLayout diese bombastische Größe“
findet es genau, vielleicht irgendwie in einem Cache zu lesen oder wenn wieder online

Suche war, gar nicht so erfolgsversprechend: ‚cardlayout size max panel‘

setze nicht die Komponente mit dem CardLayout in ein JScrollPane sondern. Setze die “Cards” in eine jeweils eigene JScrollPane und verwende diese als “Card” im Layout.

Diesen Ansatz werd ich jetzt gleich mal verfolgen.

@SlaterB
Danke für deine Mühe. Ich weiss im Moment noch nicht wann ich ein fertiges Beispiel liefern kann. Denke heute nicht mehr

Edit: Logischwerweise hatte dass mit den Scrollbalken zur folge, dass er nur noch dort angezeigt wurde wo er auch gewünscht ist. Aber trotzdem ist jedes Panel gleich gross, ob es gebraucht wird oder nicht

Ich hab mir dafür ein eigenes Cardlayout gebastelt, kannst du gerne mal anschaun:

Sieht super aus.

Ich werde das beim nächsten Projekt einfließen lassen. Ist aber genau das was ich gesucht habe.