Unsichtbares Java Swing-BildJava

Java-Forum
Anonymous
 Unsichtbares Java Swing-Bild

Post by Anonymous »

Kontext:
Ich versuche, eine App mit Java Swing zu erstellen, aber beim Versuch, der Anmeldeseite einen Hintergrund hinzuzufügen, wird das Bild nicht angezeigt. Es ist da und verschiebt andere JComponents, wenn ein Layout zum Stamm-JPanel der Seite hinzugefügt wird, es zeigt jedoch nicht das Bild an. Ich habe auch JavaFX ausprobiert, aber es scheint, als hätte ich dort das gleiche Problem.
Ich habe auch versucht herauszufinden, ob jemand anderes das gleiche Problem hat, konnte aber nichts Nützliches finden. Nachdem ich einen ganzen Tag damit verbracht hatte, eine Lösung zu finden, fragte ich hier nach:
PC-Info:
Das sind meine PC-Infos, wenn es sich um ein DE-Problem handelt

Code: Select all

                  -`                     mmt007@mmt007desktop
.o+`                    --------------------
`ooo/                    OS: Arch Linux x86_64
`+oooo:                   Host: B75M-D3P
`+oooooo:                  Kernel: Linux 6.17.6-arch1-1
-+oooooo+:                 Uptime: 21 mins
`/:-:++oooo+:                Packages: 1022 (pacman), 26 (flatpak)
`/++++/+++++++:               Shell: bash 5.3.3
`/++++++++++++++:              Display (WX942): 1440x900 in 19", 60 Hz [External]
`/+++ooooooooooooo/`            WM: Hyprland 0.51.1 (Wayland)
./ooosssso++osssssso+`           Theme: Adwaita-dark [GTK2/3/4]
.oossssso-````/ossssss+`          Icons: Adwaita [GTK2/3/4]
-osssssso.      :ssssssso.         Font: Noto Sans (12pt) [Qt], Adwaita Sans (11pt) [GTK2/3/4]
:osssssss/        osssso+++.        Cursor: default (24px)
/ossssssss/        +ssssooo/-        Terminal: kitty 0.43.1
`/ossssso+/:-        -:/+osssso+-      Terminal Font: NimbusMonoPS-Regular (11pt)
`+sso+:-`                 `.-/+oso:     CPU: Intel(R) Core(TM) i5-3570 (4) @ 3.80 GHz
`++:.                            `-/+/    GPU: Intel Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller @ 1.15 GHz [Integrated]
.`                                 `/    Memory: 3.73 GiB / 7.62 GiB (49%)
Swap: 0 B / 4.00 GiB (0%)
Disk (/): 82.46 GiB / 214.08 GiB (39%) - ext4
Locale: en_US.UTF-8
Der Code:
Und hier ist der Code, der mir Probleme bereitet:
Anmeldeseitenklasse:

Code: Select all

public class LoginPage extends Page {
protected void init() {
root.setLayout(new FlowLayout());

JImageLabel background = new JImageLabel(new ImageIcon("assets/backgrounds/login_background.png"));
background.setSize(400,400);

background.setPreferredSize(new Dimension(800,100));

root.add(background);
root.setBackground(Color.BLACK);
}

}
Seitenklasse:

Code: Select all

public abstract class Page {
protected final JPanel root = new JPanel();

public Page() { init(); }

protected abstract void init();
}
JImageLabel-Klasse:

Code: Select all

public class JImageLabel extends JLabel {
private ImageIcon image;

public JImageLabel(ImageIcon image)
{super(image);}
}
Fensterklasse:

Code: Select all

public class Window extends JFrame {
private static final Window INSTANCE = new Window("Disbot");

private static final Dimension DEFAULT_WINDOW_SIZE = new Dimension(1280,720);
private static Page page = null;

private Window(String title) throws HeadlessException
{super(title);}

public static void init(){
INSTANCE.setDefaultCloseOperation(EXIT_ON_CLOSE);
INSTANCE.setSize(DEFAULT_WINDOW_SIZE);

INSTANCE.setVisible(true);
}

public static void setPage(Page new_page){
page = new_page;
INSTANCE.setContentPane(page.root);
INSTANCE.repaint();
}
}
Hauptklasse:

Code: Select all

public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
Window.init();
Window.setPage(new LoginPage());
});
}
}
Screenshots:
Image
Image
Updates
29.12.25
Nun, es ist schon eine ganze Weile her und bisher hat nichts funktioniert, ich habe versucht
  • Bildtyp ändern
  • Bildspeicherort (und Pfad) ändern
  • .setOpaque festlegen auf true
  • Es wurde sichergestellt, dass das JLabel tatsächlich zum root
  • hinzugefügt wurde. Es wurde sichergestellt, dass root als Root-Knoten des JFrame
festgelegt wurde. Ich glaube jedoch langsam, dass es mit einem Fehler bei der Verwendung von Java Swing/JavaFX in Hyprland/Arch zu tun hat Ich kann es nicht bestätigen

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post