Manipulação de JFrame

Olá pessoal!
Sou eu de novo…Acho que vocês já estão até enjoads de mim né?! rssss…
Fazê o que?! Tenho dúvidas…

Ao problema…

Tenho uma tela de login, depois que o usuário se loga, deve-se arir o programa (lógico :roll: ),mas como fechar a tela de login sem fechar o programa inteiro??
Vou postar os códigos…
Essa é a tela de login…

[code]
package login;

import java.awt.;
import java.awt.event.
;

import javax.swing.*;

import abertura.Abertura;

public class FrameLogin extends JFrame
{
static JLabel lbLogin,lbSenha,lbFundo;
static JComboBox cbUsuario;
static JPasswordField pfSenha;
static JButton btOk,btCancelar;
javax.swing.ImageIcon icon;

public static void main(String args[])
{
	JFrame janela = new FrameLogin();
	//janela.setUndecorated(true);
	//janela.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
	//janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
	janela.setVisible(true);
	janela.setResizable(false);
}

public FrameLogin()
{
	setTitle("Login");
	setSize(250,230);
	//125
	setLocationRelativeTo(null);
	getContentPane().setLayout(null);
	//*******************************************

	java.net.URL fundoUrl = getClass().getResource("imagens/login.png");
	icon = new javax.swing.ImageIcon( fundoUrl );
	Font fonte = new Font("Serif", Font.BOLD, 25);
	//String usuario[]={"Escolha","Administrador"};

	//Instanciando os objetos
	lbLogin = new JLabel("Login");
	cbUsuario = new JComboBox(Login.caregaUsuarios());
	lbSenha = new JLabel("Senha");
	pfSenha = new JPasswordField();
	btOk = new JButton("OK");
	btCancelar = new JButton("Cancelar");
	lbFundo = new JLabel(icon);
	//tamanho e localização dos componentes
	lbLogin.setBounds(93,10,65,30);
	cbUsuario.setBounds(50,45,150,25);
	lbSenha.setBounds(93,85,65,25);
	pfSenha.setBounds(50,115,150,25);
	btOk.setBounds(18,150,100,25);
	btCancelar.setBounds(125,150,100,25);
	lbFundo.setBounds(0,0,250,200);
	//Aterando fontes
	lbLogin.setFont(fonte);
	lbSenha.setFont(fonte);
	//Adicionando os componentes
	getContentPane().add(lbLogin);
	getContentPane().add(lbSenha);
	getContentPane().add(cbUsuario);
	getContentPane().add(pfSenha);
	getContentPane().add(btCancelar);
	getContentPane().add(btOk);
	getContentPane().add(lbFundo);
	getContentPane().setBackground(Color.white);
	
	btOk.addActionListener(new ActionListener()
	{
		public void actionPerformed(ActionEvent e)
		{
			String usuario,senha;
			usuario = cbUsuario.getSelectedItem().toString(); 
			senha = pfSenha.getText();
			if (Login.login(usuario, senha))
			{
				
				JFrame janela = new Abertura();
				janela.setVisible(true);
				fecha();//Tentativa de fechar que não funciona
				System.out.println("Tentou fechar");
				
			}
			else
				JOptionPane.showMessageDialog(null,"Usuário e/ou senha inválidos", "", JOptionPane.WARNING_MESSAGE);

		}	
	});
	btCancelar.addActionListener(new ActionListener()
	{
		public void actionPerformed(ActionEvent e)
		{
			System.exit(0);
		}	
	});


}
public static void fecha()
{
	FrameLogin fl = new FrameLogin();
	fl.dispose();
}

}[/code]
Quando abrir esta a FrameLogin deve ser fechada…

[code]
package abertura;

import java.awt.;
import java.awt.event.
;
import javax.swing.*;

import login.FrameLogin;

public class Abertura extends JFrame
{

/*public static void main(String args[])
{
	JFrame janela = new Abertura();
	//janela.setUndecorated(true);
	//janela.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
	janela.setVisible(true);
}*/

public Abertura()
{
	setTitle("Base");
	setSize(1024,768);
	setLocationRelativeTo(null);
	getContentPane().setLayout(null);

	
}

}[/code]
Mas tem como fechar ela e limpar da memória ou ela continuará rodando em background?

Valeu gente e obrigado pela paciência! :thumbup: :thumbup: :thumbup:
Ha…já tinha lido diversos tópicos aqui no guj e não consegui resolver o meu problema…

Substitua o conteúdo do método “fecha()” por:

setVisible(false);
dispose();

aee dá uma olhada nesse tópico

http://www.guj.com.br/posts/list/15/114782.java

[]'s

Não deu certo colocar o setVisible no lugar fo Fecha() porque não se dá para colocar essa instrução dentro de um listener, então coloqueio o que vc precomendou dentro do método Fecha() mas criando o objeto da classe senão não dava. Só que não funcionou…

edipokbelo, até que entendi a sua explicação, mas o problema é que o fechamento da janela deve ocorrer de acordo com o listener de um botão, e dá erro tentar botar o this.dispose() e o setVisible(false) não dá erro mas também não funciona.

Retire “static” do seu método “fecha()” que você poderá executar as instruções que lhe falei.

Valeu Reilander!!! O problema era o “static”…

:thumbup: :thumbup: :thumbup: :thumbup: