Pessoal, estou com um problema que não consigo reolver… vejam se conseguem me ajudar…
Tenho uma tela principal que está sendo iniciada normalmente…
public static void main(String args[])
{
try{
final TelaPrincipal mainTela = new TelaPrincipal();
EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
mainTela.setVisible(true);
}
});
} catch(Exception e)
{
System.out.println("Erro: "+e.getMessage());
}
}
Dentro dessa tela eu tenho um menu…
E, em um dos menus eu chamo um JPanel, que está em uma outra classe…
Menu:
JMenuItem mntmJogo = new JMenuItem("Jogo");
mnOpes.add(mntmJogo);
mntmJogo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TelaConfigTeste t = new TelaConfigTeste();
setContentPane(t);
}
});e
[/code]
Até aqui normal, a tela TelaConfigTeste abre normalmente, nesta tela eu coloquei um botão para fecha-la:
[code]JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
setVisible(false);
}
});
Se eu clico no botão Fechar da TelaConfigTeste, ela desaparece normalmente, só que a primeira tela não aparece mais, fica tudo azul.
Pergunta:
Como faço para ir da primeira tela para a segunda tela e, quando fechar a segunda tela, voltar para a primeira exatamente com o que tinha nela antes?
Obrigado.
Você alterou o que quer que tivesse no fundo da sua tela para a TelaConfigTeste. O conteúdo antigo foi apagado.
Se você quer manter todas as telas ativas, leia sobre o CardLayout.
Hum, entendido ViniGodoy…
Vou ler sobre o CardLayout…
Mas suponhando que eu queira voltar e reativar o conteúdo anteior?
Como poderia fazer? recriar, carregar ou redesenhar tudo novamente da primeira tela?
Obrigado pela resposta.
Você poderia recriar o primeiro painel. Ou usar o CardLayout…
Agora que entendi sobre o CardLayout, gostaria de uma ajuda na avaliação.
Para um jogo de cartas que irá ser jogado via rede 1x1, qual dos layouts seria mais seguro e melhor indicado? o cardlayout ou o absolute?
Após conhecer ambos estou tendendo a utilizar o absolute. A duvida está no código que coloquei na criação deste tópico, vejam:
Após iniciar o programa construo a tela inical, com um desenha algo assim, então, clico no menu e vou para a segunda tela, quando clico OK na segunda tela (outra classe) queria voltar para a primeira tela com o desenho reconstuido.
Tem algum evento que incluo na primeira tela para ela saber que fechei a segunda e que é para reconstruir a primeira?
OU da segunda tela (outra classe) faço uma nova instancia da primeira (O que para mim é muito estranho isso, é como se fosse executar o programa novamente).
Agradeço se souberem algo ou se tiverem um showcase dessa navegação;
Até;
Um CardLayout onde, dentro dele, tem painéis com AbsoluteLayout.
Na verdade, o ideal é NUNCA usar AbsoluteLayout. Tem opções melhores como GridBagLayout ou GroupLayout.
AbsoluteLayout é aquele rapaz que dá problemas quando você precisa rodar o programa em alguma outra máquina ou talvez outro sistema operacional, onde o tamanho padrão das fontes é diferente (ou as próprias fontes são diferentes) e as coisas começam a ficar todas desconfiguradas (do tipo “em vez de aparecer o texto completo do JLabel, aparece um pedaço e depois as reticências”).