Hallo,
ich möchte ganz einfach in einem JFrame einen JPanel gegen einen anderen austauschen. Nur leider wird das JFrame nicht aktualisiert. Prinzipiell hab ich mir gedacht, ich schmeiße zuerst alle Komponenten aus dem JFrame raus und dann die neuen rein. Allerdings funktioniert dies nicht dynamisch also unabhängig davon was bereits drin liegt. Wenn ich jedoch das bisherige JPanel mit this.remove(panel1) rausnehme klappt es. Wo liegt das Problem?
PS: Wie kann ich den Java Code im Forum schön bunt machen?
ich möchte ganz einfach in einem JFrame einen JPanel gegen einen anderen austauschen. Nur leider wird das JFrame nicht aktualisiert. Prinzipiell hab ich mir gedacht, ich schmeiße zuerst alle Komponenten aus dem JFrame raus und dann die neuen rein. Allerdings funktioniert dies nicht dynamisch also unabhängig davon was bereits drin liegt. Wenn ich jedoch das bisherige JPanel mit this.remove(panel1) rausnehme klappt es. Wo liegt das Problem?
PS: Wie kann ich den Java Code im Forum schön bunt machen?
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GuiLayout extends JFrame implements ActionListener {
private JButton start, btnBack;
private JPanel panel1, panel2;
public GuiLayout() {
super("Layout Test");
this.initComponents();
this.setSize(500,500);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public void initComponents() {
panel1 = new JPanel();
start = new JButton("start");
start.addActionListener(this);
panel1.add(start);
this.add(panel1);
}
public void initComponents2() {
removeComponents();
panel2 = new JPanel(new FlowLayout());
btnBack = new JButton("zurück");
JLabel lblMessage = new JLabel("Neu");
panel2.add(lblMessage);
panel2.add(btnBack);
this.add(panel2);
this.invalidate();
}
public void removeComponents() {
int len = this.getComponentCount();
for(int i=0;i<len;i++) {
this.remove(i);
}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == start) {
initComponents2();
this.invalidate();
this.validate();
}
}
public static void main(String args[]) {
GuiLayout g = new GuiLayout();
}
}