JFrame e Jpanel

6 respostas
W

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
Até aqui normal, a tela TelaConfigTeste abre normalmente, nesta tela eu coloquei um botão para fecha-la:
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.

6 Respostas

ViniGodoy

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.

W

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.

ViniGodoy

Você poderia recriar o primeiro painel. Ou usar o CardLayout…

W

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é;

ViniGodoy

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.

E

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”).

Criado 2 de dezembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 6
Participantes 3