Panel auf Frame löschen und neues Panel Hinzufügen

job_2000

Mitglied
Guten Tag.

Ich weiß, dass diese Frage schon oft gestellt wurde, aber die Antworten haben bei mir leider nicht funktioniert.

Das Programm soll ein Fenster öffnen, auf welchem ein Panel mit den Folgenden Objekten angezeigt wird. Zwei Buttons, ein Label und ein Bild. Bis dahin funktioniert auch alles. Aber wenn einer der Knöpfe gedrückt wird, soll das aktuelle Panel vom Frame gelöscht werden und ein neues Panel mit anderen Objekten bzw. Beschriftungen auf dem Frame erscheinen.
Das Problem ist, dass das aktuelle Panel zwar gelöscht wird, aber das neue einfach weiß ist, obwohl sich Objekte darauf befinden...

Das ist der Code:
Java:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.Color;

public class Dan {

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Dan window = new Dan();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Dan() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        JPanel panel1 = new JPanel();
        panel1.setLocation(0, 0);
        panel1.setSize(1000, 650);
        JPanel panel2 = new JPanel();
        panel2.setLocation(0, 0);
        panel2.setSize(1000, 650);
        JPanel panel3 = new JPanel();
        panel3.setLocation(0, 0);
        panel3.setSize(1000, 650);
        JPanel panel4 = new JPanel();
        panel4.setLocation(0, 0);
        panel4.setSize(1000, 650);
        JPanel panel5 = new JPanel();
        panel5.setLocation(0, 0);
        panel5.setSize(1000, 650);
        frame = new JFrame("Game of Life");
        frame.setBounds(100, 100, 1000, 650);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        frame.getContentPane().add(panel1);
        panel1.setLayout(null);
               
       
         //ERSTE FRAGE
       
        JLabel feierBild = new JLabel(
                new ImageIcon("C:\\Users\\Jonathan\\Desktop\\Spielprojekt\\encouragement night.jpg")
                );
        feierBild.setBackground(new Color(240, 240, 240));
        feierBild.setBounds(199, 32, 596, 346);
        panel1.add(feierBild);
               
        JButton btnGut1 = new JButton("I talk to the brothers and make a plan to encourage her too.");
        btnGut1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel1.removeAll();
                frame.getContentPane().add(panel2);
                panel2.setLayout(null);
                frame.update(frame.getGraphics());
            }
        });
        btnGut1.setBounds(62, 530, 390, 49);
        panel1.add(btnGut1);
       
        JButton btnSchlecht1 = new JButton("Nothing. It's not my responibility to take care of it.");
        btnSchlecht1.setBounds(515, 530, 390, 49);
        btnSchlecht1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel1.removeAll();
                frame.getContentPane().add(panel3);
                panel3.setLayout(null);
                frame.update(frame.getGraphics());
            }
        });
        panel1.add(btnSchlecht1);
       
        JLabel text1 = new JLabel("<html>You are part of the australian campus minestry. The minestry is planning a sister <br> encouragement night. At that night every sister is getting a card from each brother.<br>You also heard of a sister from germany who is in Sydney since a couple of days. She will <br> come to the encouragement night but because she is just in australia for a couple of <br> days the brothers can't write cards for her. <br> What are you doing?");
        text1.setBounds(259, 393, 517, 118);
        panel1.add(text1);
       
       
       
        //ZWEITE FRAGE (Panel2)
       
       
        JLabel zeitZusammen = new JLabel(
                new ImageIcon("C:\\Users\\Jonathan\\Desktop\\Spielprojekt\\encouragement night.jpg")
                );
        feierBild.setBackground(new Color(240, 240, 240));
        feierBild.setBounds(199, 32, 596, 346);
        panel2.add(zeitZusammen);
        frame.update(frame.getGraphics());
       
        JButton btnGut2 = new JButton("Ask her to go to breakfast on another day.");
        btnGut1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel2.removeAll();
                panel3.removeAll();
                frame.getContentPane().add(panel4);
                panel4.setLayout(null);
                frame.update(frame.getGraphics());
            }
        });
        btnGut2.setBounds(62, 530, 390, 49);
        panel2.add(btnGut2);
       
        JButton btnSchlecht2 = new JButton("Thank her for the time and go home.");
        btnSchlecht2.setBounds(515, 530, 390, 49);
        btnSchlecht2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel2.removeAll();
                panel3.removeAll();
                frame.getContentPane().add(panel5);
                panel5.setLayout(null);
                frame.update(frame.getGraphics());
            }
        });
        panel2.add(btnSchlecht2);
       
        //Text bei guter Antwort
        JLabel text2Gut = new JLabel("<html>You are part of the australian campus minestry. The minestry is planning a sister <br> encouragement night. At that night every sister is getting a card from each brother.<br>You also heard of a sister from germany who is in Sydney since a couple of days. She will <br> come to the encouragement night but because she is just in australia for a couple of <br> days the brothers can't write cards for her. <br> What are you doing?");
        text2Gut.setBounds(259, 393, 517, 118);
        panel2.add(text2Gut);

       
        //Text bei schlechter Antwort
        JLabel text2Schlecht = new JLabel("<html>You are part of the australian campus minestry. The minestry is planning a sister <br> encouragement night. At that night every sister is getting a card from each brother.<br>You also heard of a sister from germany who is in Sydney since a couple of days. She will <br> come to the encouragement night but because she is just in australia for a couple of <br> days the brothers can't write cards for her. <br> What are you doing?");
        text2Schlecht.setBounds(259, 393, 517, 118);
        panel3.add(text2Schlecht);
   
    }
       
}

Danke schon mal für die Antworten:)
 

Meniskusschaden

Top Contributor
Aber wenn einer der Knöpfe gedrückt wird, soll das aktuelle Panel vom Frame gelöscht werden und ein neues Panel mit anderen Objekten bzw. Beschriftungen auf dem Frame erscheinen.
Das Problem ist, dass das aktuelle Panel zwar gelöscht wird,
Du löschst panel1 zwar (in dem Sinne, dass es keine Komponenten mehr enthält), du entfernst es jedoch nicht vom Frame, der somit noch das leere panel1 enthält.
aber das neue einfach weiß ist, obwohl sich Objekte darauf befinden...
Du hast dem Button btnGut1 zwei ActionListener hinzugefügt. Der zweite ist wohl eigentlich für den Button btnGut2 gedacht und entfernt alle Komponenten aus panel2, so dass es nichts mehr zum Anzeigen enthält, sobald btnGut1 gedrückt wird.
 

Meniskusschaden

Top Contributor
Je nachdem, ob du nur das panel1 oder sämtliche Komponenten vom Frame entfernen willlst, kannst du eine der beiden folgenden Möglichkeiten nehmen:
Java:
frame.getContentPane().remove(panel1);
frame.getContentPane().removeAll();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
S Frame - Panel - Dialog rückgabe wert AWT, Swing, JavaFX & SWT 5
S Panel / Frame neu zeichnen AWT, Swing, JavaFX & SWT 2
Q Swing Panel aus anderen Frame aufrufen AWT, Swing, JavaFX & SWT 2
G JTree: Panel/Frame auf der rechten Seite anzeigen! AWT, Swing, JavaFX & SWT 5
L Kann Panel nicht in Frame hinzufügen AWT, Swing, JavaFX & SWT 2
S Kann ein Panel einen Frame aufnehmen? AWT, Swing, JavaFX & SWT 4
T Image auf Panel in einem Internal Frame zeichnen AWT, Swing, JavaFX & SWT 5
S Panel (Frame) erzeugen AWT, Swing, JavaFX & SWT 5
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M Swing Panel klassenübergreifend ändern AWT, Swing, JavaFX & SWT 6
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H Scroll Panel wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 6
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
S Vaadin: Panel AWT, Swing, JavaFX & SWT 10
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
K Panel zu Laufzeit ändern AWT, Swing, JavaFX & SWT 6
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
S Panel rapaint AWT, Swing, JavaFX & SWT 18
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
M Panel in SWT einfügen AWT, Swing, JavaFX & SWT 12
T auf Panel zeichnen AWT, Swing, JavaFX & SWT 4
A FormLayout Panel-Breite AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben