Hallo liebe Community,
wenn ich mein Java-Programm starte, ist es in 80% der Fälle so, dass Bilder, die ich als JLabel eingefügt habe, normale Label und auch Button nicht schnell genug geladen werden. Die Button erscheinen nachträglich, wenn man die Maus über sie bewegt, die Label und Bilder nicht.
Woran könnte das liegen?
Hier ein Bild, die das Ganze aussieht, wenn es tatsächlich geladen ist:
Anbei mein Quellcode von der Hauptklasse und der Menüklasse, die das Menü grafisch erzeugt:
Hauptklasse:
Menüklasse:
wenn ich mein Java-Programm starte, ist es in 80% der Fälle so, dass Bilder, die ich als JLabel eingefügt habe, normale Label und auch Button nicht schnell genug geladen werden. Die Button erscheinen nachträglich, wenn man die Maus über sie bewegt, die Label und Bilder nicht.
Woran könnte das liegen?
Hier ein Bild, die das Ganze aussieht, wenn es tatsächlich geladen ist:
Anbei mein Quellcode von der Hauptklasse und der Menüklasse, die das Menü grafisch erzeugt:
Hauptklasse:
Java:
// Haupt-Klasse
public class GUI {
// Haupt-Methode
public static void main(String[] args) {
// Ausführen einer anderen Methode
gui();
}
// Methode gui
public static void gui() {
// Einbinden anderen Klassen
Main Main = new Main();
// Aufrufen einer Methode der eingebundenen Klasse
Main.Mainmenu();
}
}
Java:
// Importe
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
// Klasse Main für das Hauptmenü
public class Main {
// Einbinden anderer Klassen
Abc Abc = new Abc();
Einstellungen Einstellungen = new Einstellungen();
Einwohnerzahlen Einwohnerzahlen = new Einwohnerzahlen();
Menu Menu = new Menu();
TicTacToe TicTacToe = new TicTacToe();
// Klassen-Initialisierungen (JFrame)
JFrame fMain;
// Methoden-Initialisierungen (Label und Button)
JLabel labMainUeberschrift;
JLabel labMainAnleitungshinweis1;
JLabel labMainAnleitungshinweis2;
JLabel labMainAnleitungshinweis3;
JLabel labMainBild;
JButton bMainSpielstarten;
JButton bMainEinstellungen;
JButton bMainBeenden;
// Bilderimport
Icon iconMainHintergrund = new ImageIcon(getClass().getResource("ImageMain.png"));
// Methode Mainmenu als Fenster für die Darstellung des Hauptmenüs
public void Mainmenu() {
// JFrame: Klassendeklaration und Klassenkonkretisierung
fMain = new JFrame("2-Spieler-Reaktor");
fMain.setSize(800, 600);
fMain.setLocationRelativeTo(null);
fMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fMain.setLayout(null);
fMain.setResizable(false);
fMain.setVisible(true);
fMain.setFocusable(true);
// JMenuBar: Aufrufen einer Methode und Einbinden der Menüleiste
Menu.MenuBarAnzeigen();
fMain.setJMenuBar(Menu.MenuBar);
// JLabel: Methodendeklaration und Methodenkonkretisierung (5 Label)
labMainUeberschrift = new JLabel("2-Spieler-Reaktor");
labMainUeberschrift.setBounds(280, 300, 240, 40);
labMainUeberschrift.setHorizontalAlignment(SwingConstants.CENTER);
labMainUeberschrift.setVerticalAlignment(SwingConstants.TOP);
labMainUeberschrift.setFont(new Font("Comic Zine", Font.BOLD, 25));
labMainAnleitungshinweis1 = new JLabel("Anleitungen");
labMainAnleitungshinweis1.setBounds(540, 175, 200, 25);
labMainAnleitungshinweis1.setHorizontalAlignment(SwingConstants.CENTER);
labMainAnleitungshinweis1.setFont(new Font("Tahoma", Font.BOLD, 18));
labMainAnleitungshinweis2 = new JLabel("findest du in");
labMainAnleitungshinweis2.setBounds(540, 200, 200, 25);
labMainAnleitungshinweis2.setHorizontalAlignment(SwingConstants.CENTER);
labMainAnleitungshinweis2.setFont(new Font("Tahoma", Font.BOLD, 18));
labMainAnleitungshinweis3 = new JLabel("der Menüleiste!");
labMainAnleitungshinweis3.setBounds(540, 225, 200, 25);
labMainAnleitungshinweis3.setHorizontalAlignment(SwingConstants.CENTER);
labMainAnleitungshinweis3.setFont(new Font("Tahoma", Font.BOLD, 18));
labMainBild = new JLabel(iconMainHintergrund);
labMainBild.setBounds(0, 0, 790, 550);
// JButton: Methodendeklaration und Methodenkonkretisierung (3 Button)
bMainSpielstarten = new JButton("Spiel starten");
bMainSpielstarten.setBounds(160, 398, 140, 50);
bMainSpielstarten.setFont(new Font("Tahoma", Font.BOLD, 15));
bMainSpielstarten.addActionListener(new ActionHandler());
bMainEinstellungen = new JButton("Einstellungen");
bMainEinstellungen.setBounds(330, 398, 140, 50);
bMainEinstellungen.setFont(new Font("Tahoma", Font.BOLD, 15));
bMainEinstellungen.addActionListener(new ActionHandler());
bMainBeenden = new JButton("Beenden");
bMainBeenden.setBounds(500, 398, 140, 50);
bMainBeenden.setFont(new Font("Tahoma", Font.BOLD, 15));
bMainBeenden.addActionListener(new ActionHandler());
// Einbindung der Methoden in die JFrame-Klasse
// fMain.add(labMainUeberschrift);
fMain.add(labMainAnleitungshinweis1);
fMain.add(labMainAnleitungshinweis2);
fMain.add(labMainAnleitungshinweis3);
fMain.add(bMainSpielstarten);
fMain.add(bMainEinstellungen);
fMain.add(bMainBeenden);
fMain.add(labMainBild);
}
// ActionListener
public class ActionHandler implements ActionListener {
@SuppressWarnings("static-access")
@Override
public void actionPerformed(ActionEvent e) {
// ActionListener für Button (Funktion: Starten des Spiels)
// Je nach getroffenen Einstellungen werden die benötigten Spiele gestartet
if (e.getSource() == bMainSpielstarten) {
if (Einstellungen.einstellungenSpielAbcSpielen == true) {
Abc.AbcSpiel();
fMain.dispose();
} else if (Einstellungen.einstellungenSpielAbcSpielen == false
&& Einstellungen.einstellungenSpielEinwohnerzahlenSpielen == true) {
Einwohnerzahlen.EinwohnerzahlenSpiel();
fMain.dispose();
} else if (Einstellungen.einstellungenSpielAbcSpielen == false
&& Einstellungen.einstellungenSpielEinwohnerzahlenSpielen == false
&& Einstellungen.einstellungenSpielTicTacToeSpielen == true) {
TicTacToe.TicTacToeSpiel();
fMain.dispose();
}
}
// ActionListener für Button (Funktion: Schließen des Fensters und Öffnen eines anderen Fensters)
else if (e.getSource() == bMainEinstellungen) {
Einstellungen.Einstellungsmenue();
fMain.dispose();
}
// ActionListener für Button (Funktion: Schließen des Programms)
else if (e.getSource() == bMainBeenden) {
System.exit(0);
}
}
}
}
Zuletzt bearbeitet: