JButton ação para voltar a janela anterior

3 respostas
L

Galera blz?

Sou novo no forum e no mundo JAVA. Já adiquiri até um ditado para mim, que li em um dos forum "Tem que errar muito até que se possa compreender e programar em JAVA" e é verdade!! Mas deixando o blá, blá de lado e indo para o assunto principal tou fazendo um sisteminha bancário, só para prática mesmo, tou começando pelas os forms utilizando o Swing bem tou querendo colocar o evento do botão voltar para que ele volte para o form anterior e não sei como fazer isso :cry: já tentei, já pesquisei em tudo que canto e nada!!! Vale a pena ressaltar que tou trabalhando em cima de um unico JFrame quando clico no botão depositar, por exemplo, o evento é de remover todos componentes desse Frame e add um novo painel com outros componentes como novos botão. abaixo segue o um trecho do programa para que vcs possam me ajudar se for possivel:

public class MenuPrincipalDoCliente extends JFrame implements WindowListener{
	private JButton botaoSacar, botaoDepositar, botaoTranseferir, botaoCC, 
					botaoCPoupanca,botaoCancelar,botaoVoltar;
	private JPanel painelMenuOpcoes, painelMenuOpcoes2,painelMenuOpcoes3;
	private static MenuPrincipalDoCliente instancia = null;

	public MenuPrincipalDoCliente(){

		painelMenuOpcoes  = new JPanel(new GridLayout(0,1,100,20));
		painelMenuOpcoes2 = new JPanel(new GridLayout(0,1,100,20));
		painelMenuOpcoes3 = new JPanel(new GridLayout(0,1,100,20));

		botaoVoltar = new JButton("Voltar");
		botaoCancelar = new JButton("Cancelar");
		botaoCC = new JButton("Conta Corrente");
		botaoCPoupanca = new JButton("Conta Poupança");	
		botaoDepositar = new JButton("Depositar");
		botaoSacar = new JButton("Sacar");
		botaoTranseferir = new JButton("Transferência");
		
		painelMenuOpcoes.add(botaoDepositar);
		painelMenuOpcoes.add(botaoSacar);
		painelMenuOpcoes2.add(botaoTranseferir);
		painelMenuOpcoes2.add(botaoCancelar);

		this.setLayout(new FlowLayout());
		this.add(painelMenuOpcoes,FlowLayout.LEFT);
		this.add(painelMenuOpcoes2, FlowLayout.CENTER);
		this.setTitle("Teste");
		this.setSize(350,300);
		this.setLocationRelativeTo(null);
		this.addWindowListener(this);
		
			
		botaoDepositar.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e) {
				getInstance().acaoDepositar();
			}			
		});
		
		botaoVoltar.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e) {
				getInstance().acaoVoltar();
			}			
		});


	}
	
	public void acaoDepositar(){
		getContentPane().repaint();
		System.out.println(this.getName());
		getContentPane().removeAll();
		this.add(painelMenuOpcoes3);
		this.getPainelMenuOpcoes3().add(getBotaoCC());
		this.getPainelMenuOpcoes3().add(getBotaoCPoupanca());
		this.getPainelMenuOpcoes3().add(getBotaoVoltar());
		validate();
				
	}
	
	public void acaoVoltar(){
		//NÃO SEI O QUE FAÇO HELPPPPP!!!!!!!!!!!!!!!!!!!!
		
		validate();
		
	}

3 Respostas

D

Olá
Um jeito é vc passar a referencia do frame anterior para esse frame, e na hora do
evento vc setVa visivel false para o frame atual e visivel true para o frame anterior.

public void acaoVoltar(){  
        this.setVisivel(false);
        frameAnterior.setVisivel(true);
     }
A priori é assim, mas se houve uma solução mais elegante eu não conheço!! rsrsrs

Espero ter ajudado
Flwssss

L

Thiago,

É uma boa, porém ele irá abrir um outro JFrame, sendo que eu estou trabalhando no mesmo JFrame só faço removerAll() tdos os componentes e colocar os novos que quero mostrar. Se tiverem uma outra solução agradeceria muito!

Att,

Leonardo Couto Conrado.

D

Olá
Se vc usar um esquema de uma classe reponsável pelo JFrame… e vc usar panéis,
dai vc setContentPane() e depois faz repaint ou validate
Acho que também pode dar certo!!

Flwss

Criado 18 de outubro de 2008
Ultima resposta 19 de out. de 2008
Respostas 3
Participantes 2