zum “besser” : wenn es, wie in deinem fall, ein “background” werden soll könnte man auch ein JPanel nehmen und dessen paintComponent() überschreiben
dann nimmt man noch ein JLayeredPane und ein zweites JPanel das man durchsichtig macht, und schon hat man zumindest das end-ergebnis
ob es noch “besser” geht lehn ich mich mal nich ausm fenster
Hab’ ich mir auch gedacht, als ich das gesehen habe Das ist wohl die ineffizienteste und unflexibelste Art, ein Bild zu skalieren, die man sich vorstellen kann…
double w = image.getIconWidth();
double h = image.getIconHeight();
image.setImage(image.getImage().getScaledInstance((int) w, (int) h, Image.SCALE_DEFAULT));
JLabel labelImage = new JLabel(image);
labelImage.setBounds(0, 0, (int) w, (int) h);```
Aber ich habe nochmal eine 2. Frage. Ich habe jetzt alle Bilder im Konstruktor geladen, außer eines dies will ich in einer Methode laden lassen. Ich habe auch alles hin bekommen, aber das Problem ist es wird hinter den anderen generiert und nicht auf erster Stelle. Daher wollte ich fragen, wie ich das Label auf erster Stelle setzten kann.
LG Huntro
Auch wenn man bestimmte Aussagen oft bis in absurde Details zerpflücken kann: Ich hätte nicht (so) gesagt, dass es ineffizient ist, wenn es nicht ineffizient wäre. Aber…
back to topic…
ja, getScaledInstance ist eine Möglichkeit, unter den Vorbehalten, die im verlinkten Wiki-Eintrag (und im von dort aus verlinkten Artikel) erwähnt sind.
Wenn du jetzt aber von “hinter die anderen” und verschiedenen “Stellen” redest, klingt das, als würdest du die JLabels als Sprites mißbrauchen (das würde auch das null-Layout erklären). Man könnte jetzt Tipps geben, die in Richung JLayeredPane oder Container#setComponentZOrder gehen, aber dass du damit vermeintlich (!) das Problem lösen würdest, würde dich ggf. nur noch tiefer in den Morast reiten. Darum mein Tipp: Verwende nicht JLabels, wenn du Sprites zeichnen willst!