Ich mache ein Programm in Java wo ich einige JPanels mit verschiedenen Layouts habe und ich möchte zwischen ihnen wechseln. Auf diesen JPanels habe ich andere JPanels mit anderen Komponenten (wie JButtons und JLabels) und möchte sie in Abhängigkeit von der JFrame-Größe skalieren (z. B. JPanel auf JPanel mit einer Höhe, die halb so groß ist wie der Inhaltsbereich von JFrame).Java - Wechsel zwischen JPanels mit ihren eigenen JPanels und Größenanpassung dieser inneren JPanels und Komponenten je nach JFrame Größe
Ich habe versucht, diese JPanels zu machen und sie direkt zu entfernen oder zu JFrame hinzufügen und dann packen, neu validieren und neu streichen JFrame aber manchmal JPanels nicht angezeigt, wenn ich Programm gestartet habe.
Ich habe auch versucht, mit CardLayout. Ich habe JPanels erstellt und sie zu einem Container hinzugefügt, der in JFrame hinzugefügt wurde. Die Umstellung war in Ordnung, aber ich kann JPanels und andere Komponenten in JPanels im CardLayout-Container nicht skalieren, da ich beim Versuch, Größe des Inhaltsbereichs von JFrame oder Größe des CardLayout-Containers mit JPanels zu erhalten, Breite und Höhe gleich Null erhielt.
Also, gibt es einen Weg, dies zu erreichen?
Es tut mir leid, wenn ich es unverständlich geschrieben habe. Eigentlich möchte ich ein Spiel mit verschiedenen Szenen machen und wenn du auf eine Schaltfläche klickst, wechselt es zu einer anderen Szene mit verschiedenen Komponenten (JPanels, JButtons, Bilder ...). Vielleicht kann ich ein Haupt-JPanel in JFrame verwenden und dann sein Layout ändern und je nach Szene Hintergrundbild, JPanels, JButtons usw. entfernen und hinzufügen, aber ich weiß nicht, ob es möglich ist und ob es keine weiteren Probleme geben wird.
Vielen Dank für jeden Hinweis.
Ich verwende keine absolute Positionierung, aber ich möchte nur die Größe der inneren Komponenten angeben, z. JPanel auf JPanel mit einer Höhe, die halb so groß ist wie der Inhaltsbereich von JFrame, aber ich kann die tatsächliche Größe des Frames oder seines Inhaltsbereichs nicht im Konstruktor der JPanel-Klasse erhalten, die sich im CardLayout-Container befindet. – Spook
(1+) - 'JPanel auf JPanel mit einer Höhe, die halb so groß ist wie der Inhaltsbereich von JFrame' - das Panel, das Sie dem CardLayout hinzufügen, könnte also ein Panel mit einem GridLayout sein. Sie haben unseren 'SSCCE' nicht gepostet, damit wir nicht weiter helfen können. – camickr