Já tenho essa dúvida a algum tempo, mas nunca encontrei nada respeito até que tive uma possível ideia que poderia funcionar que seria meio que alterar o painel que é adicionado ao contentPane, só que não esta dando certo, então resolvi postar o código para ver se alguém tem alguma sugestão de como fazer isso?
PS: Para deixar a coisa mais clara vou postar alguns prints do que acontece vou postar um exemplo do que acontece em muitos programas:
http://dl.dropbox.com/u/90655793/1.png
http://dl.dropbox.com/u/90655793/2.png
http://dl.dropbox.com/u/90655793/3.png
Como vocês podem notar os não é outra janela é a mesma apenas alguns elementos da janela são trocados;
Segui o código
package AlterarIconesJanela;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Font;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Janela extends JFrame {
private JPanel contentPane;
private int trava = 1;
JPanel panel_1 = new JPanel();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Janela frame = new Janela();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Janela() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 460, 400);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
if (trava == 1){
panel_1 = mudarJanela();
}
JButton btnMudarJanela = new JButton("Mudar janela");
btnMudarJanela.setBounds(22, 10, 400, 50);
btnMudarJanela.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
trava = trava + 1;
panel_1 = mudarJanela();
System.out.println(trava);
}
});
contentPane.add(btnMudarJanela);
contentPane.add(panel_1);
}
public JPanel mudarJanela (){
//dimensões do panel
int a = 0, b = 72, c = 444, d = 285;
JPanel panel = new JPanel();
if (trava % 2 == 1){
System.out.println("janela1");
panel.setBounds(a, b, c, d);
contentPane.add(panel);
panel.setLayout(null);
JLabel lblNewLabel = new JLabel("Janela 1");
lblNewLabel.setForeground(Color.BLUE);
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(172, 127, 100, 30);
panel.add(lblNewLabel);
return panel;
}else{
System.out.println("janela2");
panel.setBounds(a, b, c, d);
contentPane.add(panel);
panel.setLayout(null);
JLabel lblNewLabel = new JLabel("Janela 2");
lblNewLabel.setForeground(Color.RED);
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(172, 127, 100, 30);
panel.add(lblNewLabel);
return panel;
}
}
}

