LayoutManager mischen keine gute Idee?

bloodyrocky

Mitglied
Hey Leute,

ich habe gerade versucht in ein JPanel mit Flowlayout ein JPanel ohne LayoutManager "einzupflanzen", was natürlich auch ging. Jedoch wollte ich dann dem JPanel ohne LayoutManager noch ein Bild mitgeben, was nicht mehr geht. D.h. ich habe folgendes gemacht:
Java:
this.setLayout(null);
JLabel label = new JLabel(new ImageIcon(image));
label.setBounds(10,10,100,100);
this.add(label);
Sobald ich dem JPanel einen LayoutManager verpasse, wird auch das Label angezeigt, dafür aber auch das setBounds/setLocation irgnoriert. Ich müsste aber meine Labels von Hand platzieren, hat da irgendwer eine Idee? Und könnte mir wer erklären, warum ich mein Panel nicht ohne LayoutManager erzeugen kann und es trotzdem was anzeigt? Das wäre super, weil solangsam werd ich verrückt mit den Layoutmanagern.

Grüße BR
 

Marco13

Top Contributor
Aber noch die Randbemerkung, dass ein 'null'-Layout nur SEHR selten sinnvoll ist... Woher soll das Panel wissen, wie und wo das Label angezeigt wird (und wie groß das Panel selbst oder das Label sein sollen) ?
 

bloodyrocky

Mitglied
Das PreferredSize hat ihm gefehlt. Interessant daran ist, dass das Panel gezeichnet wird, nicht aber sein Inhalt. Der wird nur gezeichnet wenn ich die Size angebe. Na ja, gut zu gegebener Maßen woher soll Java wissen was ich will :D
Das Layout ist NULL, weil darin eine Animation laufen muss und die Bilder positioniere ich über setLocation.

Danke!
Gruß BR
 

André Uhres

Top Contributor
Um ein zu animierendes Objekt zu zeichnen, gibt es grob gesagt zwei Möglichkeiten:
- Wir zeichnen das Objekt auf eine JComponent, die wir zur Basiskomponente hinzufügen.
- Wir zeichnen das Objekt direkt auf die Basiskomponente.
Um das Objekt zu verschieben, benutzen wir im ersten Fall die Methode "Component#setLocation" und im anderen Fall verändern wir die Koordinaten bevor wir "repaint" aufrufen. Dieser Animationsvorgang muss in einem eigenen Thread geschehen. Eine einfache Möglichkeit, diesen Thread zu verwirklichen, besteht darin, einen "javax.swing.Timer" zu benutzen.
 

bloodyrocky

Mitglied
Wie kommst du darauf ???:L Ein JPanel mit Grösse (0,0) wird vom System aus überhaupt nicht gezeichnet, wozu auch?

Das Panel hatte nicht die Größe (0,0), sondern 800x600 oder sowas. Von daher hat es mich ja gewundert. Wäre das Panel (0,0) gewesen, wäre es klar.

Um ein zu animierendes Objekt zu zeichnen, gibt es grob gesagt zwei Möglichkeiten:
- Wir zeichnen das Objekt auf eine JComponent, die wir zur Basiskomponente hinzufügen.
- Wir zeichnen das Objekt direkt auf die Basiskomponente.
Um das Objekt zu verschieben, benutzen wir im ersten Fall die Methode "Component#setLocation" und im anderen Fall verändern wir die Koordinaten bevor wir "repaint" aufrufen. Dieser Animationsvorgang muss in einem eigenen Thread geschehen. Eine einfache Möglichkeit, diesen Thread zu verwirklichen, besteht darin, einen "javax.swing.Timer" zu benutzen.

Ich verschiebe nur zwei Bilder, von daher habe ich die Variante mit setLocation und Timer gewählt. Stoße dabei aber wieder an Grenzen. Die Elemente sollen die Strecke in einer von mir bestimmten Zeit zurück legen. Die Formel dafür ist klar und funktioniert auch rein rechnerisch, jedoch schafft Java es nicht. Bisher haben 4 Leute die Formel überprüft und kamen immer zum gleichen Lösungsweg. Hier scheint es wohl Limitierungen von Swing zu geben, oder aber von setLocation. Habe den Code leider nicht zur Hand, werde ihn aber nachreichen, in einem eigenen Thread. Möchte den hier nur ungern auf das Thema ernsthaft ausweiten.

Die Frage die hier noch übrig bleibt, ist warum wird ein Label, dessen Inhalt ein Bild ist (und sichergestellt wurde das es geladen ist, mittels MediaTracker) und somit eigentlich mindestens die Größe des Bildes haben sollte nicht gezeichnet? Erst muss ich noch einmal die Größe des Bildes als Größe des Labels setzen, damit es gezeichnet wird. Sobald ich aber einen Layoutmanager nehme ist das nicht mehr von Nöten. Ich glaube zwar die Antwort zu wissen, aber so wirklich sinnvoll erscheint es mir nicht, oder ich will es nicht wahr haben ;)
Die Vermutung liegt jeden Falls nahe, dass der Layoutmanager die Größe des Labels setzt und bei keinem Layoutmanager eben ich das machen muss. Klingt mir logisch...
 

André Uhres

Top Contributor
Ein Layoutmanager setzt die Größe einer Komponente gewöhnlich aufgrund seiner "PreferredSize". Wenn du keinen Layoutmanager benutzt, dann bist du selbst der Layoutmanager und somit verantwortlich für Größe und Position der Komponenten. Wenn keine Größe gesetzt wird, wird auch nichts gezeichnet.
Java:
label.setSize(label.getPreferredSize());
 
Zuletzt bearbeitet:

bloodyrocky

Mitglied
Ein Layoutmanager setzt die Größe einer Komponente gewöhnlich aufgrund seiner "PreferredSize". Wenn du keinen Layoutmanager benutzt, dann bist du selbst der Layoutmanager und somit verantwortlich für Größe und Position der Komponenten. Wenn keine Größe gesetzt wird, wird auch nichts gezeichnet.
Java:
label.setSize(label.getPreferredSize());

Wie gesagt, klingt logisch und ist es ja auch! :D

Vielen Dank!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Z Swing Welcher Layoutmanager bei ScrollPane? AWT, Swing, JavaFX & SWT 4
F Welchen Layoutmanager verwenden? AWT, Swing, JavaFX & SWT 2
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
N Welcher LayoutManager AWT, Swing, JavaFX & SWT 16
Birke Swing Neue Swing LayoutManager: TOnion Projekt AWT, Swing, JavaFX & SWT 10
B Swing JLabel und LayoutManager AWT, Swing, JavaFX & SWT 20
F Swing Layoutmanager für Mittplatzierung ? AWT, Swing, JavaFX & SWT 6
B SWT Dynamische GUI (Layoutmanager?) AWT, Swing, JavaFX & SWT 2
J Welche(n) LayoutManager für große Gui? AWT, Swing, JavaFX & SWT 6
D Layoutmanager in Java Swing vs. Java AWT AWT, Swing, JavaFX & SWT 3
P Layoutmanager-Richtlinie ? AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing suche passenden LayoutManager AWT, Swing, JavaFX & SWT 8
SexyPenny90 Welcher LayoutManager erfüllt meine Bedingung AWT, Swing, JavaFX & SWT 7
C SWT LayoutManager AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
R Layoutmanager AWT, Swing, JavaFX & SWT 4
M Fenster aufteilen, aber mit welchem LayoutManager? AWT, Swing, JavaFX & SWT 10
G LayoutManager LayoutManager gesucht AWT, Swing, JavaFX & SWT 2
R Swing Variable Panelbreite ohne Layoutmanager AWT, Swing, JavaFX & SWT 6
R LayoutManager Problem mit setLayout(LayoutManager) AWT, Swing, JavaFX & SWT 9
F Anfängerfrage: Swing und LayoutManager AWT, Swing, JavaFX & SWT 4
V LayoutManager Eigener LayoutManager funktioniert nicht. AWT, Swing, JavaFX & SWT 5
N LayoutManager suche LayoutManager für Tabellenstruktur AWT, Swing, JavaFX & SWT 2
D LayoutManager JPanels ohne LayoutManager platzieren AWT, Swing, JavaFX & SWT 6
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
hdi SWT Suche passenden LayoutManager AWT, Swing, JavaFX & SWT 5
C passender layoutmanager gesucht AWT, Swing, JavaFX & SWT 2
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
E Swing Suche LayoutManager AWT, Swing, JavaFX & SWT 5
E Layoutmanager mit fester Breite gesucht AWT, Swing, JavaFX & SWT 9
R Layoutmanager AWT, Swing, JavaFX & SWT 13
K Swing JInternalFrame und LayoutManager AWT, Swing, JavaFX & SWT 6
W LayoutManager Hell AWT, Swing, JavaFX & SWT 2
P JPanel: LayoutManager und trotzdem absolut positionieren? AWT, Swing, JavaFX & SWT 3
J eigener Layoutmanager? AWT, Swing, JavaFX & SWT 6
M JLabel mit Layoutmanager AWT, Swing, JavaFX & SWT 2
G Layoutmanager mit festem Gitter AWT, Swing, JavaFX & SWT 6
R getInsets ohne Layoutmanager AWT, Swing, JavaFX & SWT 7
R LayoutManager ähnlich BorderLayout, mit einer Ausnahme AWT, Swing, JavaFX & SWT 2
T Layoutmanager der vorhanden Platz beruecksichtigt? AWT, Swing, JavaFX & SWT 5
J LayoutManager der Elemente untereinander anordnet. AWT, Swing, JavaFX & SWT 11
F Der richtige Layoutmanager AWT, Swing, JavaFX & SWT 6
G LayoutManager und Abstand AWT, Swing, JavaFX & SWT 6
A LayoutManager-Wünsche AWT, Swing, JavaFX & SWT 16
T % von Komponenten unter Layoutmanager AWT, Swing, JavaFX & SWT 2
M Layoutmanager und Komponente AWT, Swing, JavaFX & SWT 2
F LayoutManager und Component.setVisible(boolean) AWT, Swing, JavaFX & SWT 2
G Fenster mit LayoutManager AWT, Swing, JavaFX & SWT 3
C Verschachtelung von JPanels mit verschiedenen LayoutManager AWT, Swing, JavaFX & SWT 4
T JInternalFrame Konflikt mit LayoutManager AWT, Swing, JavaFX & SWT 5
S JTextField ohne LayoutManager positionieren AWT, Swing, JavaFX & SWT 3
F PanelBounds an TextPaneBounds anpassen LayoutManager: Null AWT, Swing, JavaFX & SWT 2
B Welchen LayoutManager? AWT, Swing, JavaFX & SWT 17
S Wie funktioniert der LayoutManager? AWT, Swing, JavaFX & SWT 9
P Zeichnen + LayoutManager AWT, Swing, JavaFX & SWT 7
B Layoutmanager Tutorial AWT, Swing, JavaFX & SWT 15
M LayoutManager Informationen AWT, Swing, JavaFX & SWT 4
L LayoutManager ähnlich wie FlowLayout AWT, Swing, JavaFX & SWT 5
S Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 6
D LayoutManager und JPanel AWT, Swing, JavaFX & SWT 9
J Welcher Layoutmanager? AWT, Swing, JavaFX & SWT 20
L Probleme mit Scrollbar und LayoutManager AWT, Swing, JavaFX & SWT 3
G Neuer LayoutManager AWT, Swing, JavaFX & SWT 3
H LookAndFeel LookAndFeels mischen AWT, Swing, JavaFX & SWT 4
J Swing und AWT mischen? AWT, Swing, JavaFX & SWT 4
M Mischen von AWT und Swing? AWT, Swing, JavaFX & SWT 5
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
gamebreiti auf usereingabe warten mit GUI(nur Labels, Buttons etc. keine Texteingaben) AWT, Swing, JavaFX & SWT 3
P Swing JTable keine Markierung nach Button klick AWT, Swing, JavaFX & SWT 0
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
N JavaFX Keine Dynamic AWT, Swing, JavaFX & SWT 2
W Swing Ausführung einer .jar zeigt keine Reaktion AWT, Swing, JavaFX & SWT 4
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
N Swing JTable mit Sorter: Keine Sortierung bei Klick in Header AWT, Swing, JavaFX & SWT 3
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
A trotz setSize keine breite AWT, Swing, JavaFX & SWT 4
Q JTable - Keine Spaltennamen AWT, Swing, JavaFX & SWT 3
H Swing Keine Rückmeldung (freeze) bei setVisible(false) oder dispose() AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben