Passar do JInternalFrame para o JFrame

3 respostas
Thiago_G3

Olá a todos… Tô com um problemão aki… :frowning:

É o seguinte, estou desenvolvendo um programa, e ele possui usuários, e logo quando ele é aberto, aparece uma JInternalFrame pedindo usuário e senha… Até ai tudo bem, só que eu queria que quando ele digitasse o usuário e senha e clicasse em OK e a janela se fechasse, fosse atualizado um JTextField que se encontra no JFrame Principal, que utilizei de barra de status do programa… Tipo, para dar boas vindas ao usuário: “Bem vindo” e o nome do usuário… só que não consigo fazer ele atualizar, sem fechar o programa… alguem poderia me ajudar?!? :lol:

Dê uma olhada nessa imagem para entender melhor, plisss:
http://www.photo-host.org/img/047086problema_java.jpg

Ficaria muito grato!
[]'s 4all

3 Respostas

davidbuzatto
// no construtor do seu JInternalFrame
public NomeDoSeuInternalFrame( NomeDoSeuJFrame f ) {
	
	// recebe a referência do seu frame principal
	frame = f;
	
}


// junto com as declarações dos campos do seu JInternalFrame
private NomeDoSeuJFrame frame;


/* 
 * para trabalharmos com componentes swing atualizados dinamicamente
 * é interessante que utilizemos threads separadas, sendo assim, criamos uma
 * thread para realizar a tarefa do botão e uma para atualizar o JTextField.
 * Vc pode tbm criar classe internas anonimas, mas vai ter o incoveniente de
 * criar referências final para trabalhar com seus objetos...
 */
private class AtualizaJTextField implements Runnable {
	
	public AtualizaJTextField( String mensagem ) {
		
		super();
		this.mensagem = mensagem;
		
	}
	
	// é dentro do método run que a interface é atualizada
	public void run() {
	
		frame.getJTextFieldASerAtualizado().setText( mensagem );
		
	}
	
	private String mensagem;
		
}


private class ExecutaBotao implements Runnable {
	
	public void run() {
		
		//Abre conexão;
		//Consulta usuários no banco;
		//Verifica se usuário é cadastrado;
		
		if ( usuário é cadastrado ) {
			
			/* 
			 * para atualizar o JTextField do JFrame
			 * serie melhor vc usar um JLabel, mas fica a seu critério.
			 */
			
			/*
			 * para trabalharmos com atualizacoes, utilizamos o método
			 * invokeLater que vai colcoar a atualização na interface
			 * na fila de processamento de eventos do awt, passando como
			 * parâmetro um Runnable (note que estamos dentro de uma thread!
			 */
			 
			SwingUtilities.invokeLater( new AlteraJTextField( "sua mensagem" ) );
	
			// descarta o JInternalFrame
			dispose();
			
		} else {
			
			//Exibe mensagem que o usuário não é cadastrado;
			
		}
			
	}
	
}

// método do btn OK
private void btnOKActionPerformed( ActionEvent evt ) {
		
	// criamos a thread com o runnable que escrevemos
	Thread t = new Thread( new ExecutaBotao() );
	t.start();	// iniciamos a thread
	
}

Fiz um projeto no NetBeans, ta meio baguncado mas vc vai ententer

Falow!

Thiago_G3

nossaa!!! valew mesmo cara… você me ajudou mtoooo msm! Muito obrigado! Acabei tendo melhor noção de classes internas tbm! valew msm! Precisando estamos ai!

davidbuzatto

Disponha :smiley:

Criado 22 de julho de 2006
Ultima resposta 23 de jul. de 2006
Respostas 3
Participantes 2