[Swing] Fensterinhalt ändern --> leeres Fenster

Trekky

Grünschnabel
hey,
ich will in meinem Java Projekt den Pane vom Frame ändern,
das funktioniert auch, allerdings bleibt das Fenster leer.
Erst wenn ich das Fenster ein wenig größer ziehe wird der Inhalt angezeigt.
An was kann das liegen?
Danke für eure Hilfe

gruß
Trekky
 
Nachdem du das neue Panel reinsetzt wird das JFrame nicht neu gezeichnet. Die einfachste Lösung ist wahrscheinlich nach dem ersetzen des JPanels die repaint() - Methode des JFrames aufrufen. Diese Methode wird nämlich auch gerufen wenn du dein JFrame vergrößerst bzw. verkleinerst oder mini- bzw. maximierst.

Gruß
sony2
 
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Main {
    
    private  Frame f = new Frame();
    private eintragen_Panel ep = new eintragen_Panel();
    private AbfragePanel ap =  new AbfragePanel();

    public Main() {
                 
        JMenuBar menueleiste = new JMenuBar();
        JMenu   menu = new JMenu("VokabelTrainer");
        JMenuItem eintragen = new JMenuItem("Vokabeln eintragen");
        JMenuItem abfrage = new JMenuItem("Vokabeln abfragen");
        JMenuItem beenden = new JMenuItem("Programm beenden");
        
        eintragen.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e){
                f.setContentPane(ep);
                f.repaint();
            }
        });
        
        abfrage.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e){
                f.setContentPane(ap);
                ap.setVisible(true);
                f.repaint();
            }
        });
        
        beenden.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }
        });
        
        menu.add(abfrage);
        menu.add(eintragen);
        menu.addSeparator();
        menu.add(beenden);
        menueleiste.add(menu);
        
        f.setJMenuBar(menueleiste);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setContentPane(ap);
        f.setVisible(true); 
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        new Main();
    }
    
}
Hier ist mal mein Code.
Die repaint methode hab ich ja eingefügt.
Bringt aber auch nix
 

Neue Beiträge

Zurück