Com extends JDialog não aparece JFrame

5 respostas
W

Preciso fazer um aplicativo que leia um usuario, uma senha, guarde em um arquivo .txt e faça o login, utilizando o JDialog também.

A minha idéia foi aparecer um menu perguntando o que o usuário deseja fazer, criar usuario ou logar, e então abrir um JDialog solicitando o usuario e senha.

Criar e Logar funcionam, porém não em conjunto com o menuzinho, aparece apenas um JFrame vazio... :s

As Classes são:

[color=red]CLASSE OPCAO[/color]

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Opcao extends JFrame implements ActionListener {

	JPanel painel;
	JPanel painel2;
	JLabel rotulo;
	JButton criar;
	JButton logar;
	JMenuBar barra;
	JMenu aplicativo;
	JMenuItem sair;

	public Opcao() {
		setTitle("Opções");
		this.setSize(300, 110);
		this.setVisible(true);
		this.setLayout(new FlowLayout());
		this.setLocationRelativeTo(null);

		painel = new JPanel();
		painel.setLayout(new BorderLayout());

		rotulo = new JLabel("O que deseja fazer ?");
		rotulo.setFont(new Font("Arial", Font.PLAIN, 20));
		painel.add(rotulo, BorderLayout.CENTER);

		painel2 = new JPanel();
		painel2.setLayout(new GridLayout(1, 2, 20, 20));

		criar = new JButton("Criar Usuário");
		criar.addActionListener(this);
		painel2.add(criar);

		logar = new JButton("Efetuar Login");
		logar.addActionListener(this);
		painel2.add(logar);

		this.add(painel, BorderLayout.NORTH);
		this.add(painel2, BorderLayout.SOUTH);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {
		// Verifica se o evento pertence ao botão
		if (e.getSource() == criar) {
			CriaLogin criaLogin = new CriaLogin(this);
			JOptionPane.showMessageDialog(null, "Usuário cadastrado com Sucesso:\n\nLogin: " + criaLogin.getUsuario() + "\nSenha: " + criaLogin.getSenha());
		}
	}
}

[color=red]CLASSE CRIALOGIN[/color]

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFrame;

public class CriaLogin extends JDialog implements ActionListener{

	JPanel painel;
	JLabel rotulo1;
	JTextField campo1;
	JLabel rotulo2;
	JTextField campo2;
	JButton botao;
	String usuario;
	String senha;
	
	public CriaLogin(JFrame frame){
		super(frame, true);
		this.setSize(290, 125);
		this.setVisible(true);
		this.setLayout(new BorderLayout());
		this.setLocationRelativeTo(null);
		this.setTitle("Criar Login");
		//this.setResizable(false);
		
		painel = new JPanel();
		
		rotulo1 = new JLabel("Login:");
		painel.add(rotulo1);
		
		campo1 = new JTextField(20);
		painel.add(campo1);
		
		rotulo2 = new JLabel("Senha:");
		painel.add(rotulo2);
		
		campo2 = new JTextField(20);
		painel.add(campo2);
		
		botao = new JButton("Criar Login");
		botao.addActionListener(this);
		painel.add(botao);
		
		this.add(painel);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}//Fim do Construtor
	
	public void actionPerformed(ActionEvent e) {
		// Verifica se o evento pertence ao botão
		if (e.getSource() == botao) {
			usuario = campo1.getText();
			senha = campo2.getText();
			new GeradorLogin(campo1.getText(), campo2.getText());
			dispose();
		}
	}
	
	public String getUsuario(){
		return usuario;
	}
	
	public String getSenha(){
		return senha;
	}
} //Fim da Classe CriaLogin

[color=red]CLASSE GERADORLOGIN[/color]

import java.io.File;
import java.io.IOException;
import java.io.FileWriter;
import java.io.PrintWriter;

public class GeradorLogin {

	File arquivo;
	FileWriter arquivoEscrever;
	PrintWriter escrever;

	public GeradorLogin(String usuario, String senha) {
		try {
			arquivo = new File("login.txt");

			arquivo.createNewFile();
			
			arquivoEscrever = new FileWriter("login.txt", false);
			
			escrever = new PrintWriter(arquivoEscrever);

			escrever.printf("%s%s", usuario, senha);
			
			escrever.close();

		} catch (IOException e) {
			
			System.out.println(e.getMessage());
		}
	} // Fim do Construtor
} // Fim da Classe GeradorLogin

[color=red]CLASSE TESTAOPCAO[/color]

public class TestaOpcao {
	public static void main(String[] args) {

		Opcao op = new Opcao();
	}
}

Quem puder ajudar, brigadão... :wink:

5 Respostas

InicianteJavaHenriqu

É porque você tem que chamar o método setVisible(true); de seus JFrames ao final do método construtor ou chamá-los no Main (é uma boa prática).

:thumbup:

W

InicianteJavaHenrique:
É porque você tem que chamar o método setVisible(true); de seus JFrames ao final do método construtor ou chamá-los no Main (é uma boa prática).

:thumbup:

Não fez diferença. Aliás, desse jeito nem o JFrame vazio abriu… :?

mcirqueira

Arrumei a classe GeradorLogin:

import java.io.File;  
import java.io.IOException;  
import java.io.FileWriter;  
import java.io.PrintWriter;  
  
public class GeradorLogin {  
  
    File arquivo; // Pra que serve esse File?
    FileWriter arquivoEscrever;  
    PrintWriter escrever;  
  
    public GeradorLogin(String usuario, String senha) {  
        try {  
            arquivo = new File("login.txt");  // Desnecessario....
  
            if (!arquivo.exists()) arquivo.createNewFile(); // Se o arquivo não existe, cria-o
              
            arquivoEscrever = new FileWriter("login.txt"); // Não precisa colocar false, false já é o padrão
              
            escrever = new PrintWriter(arquivoEscrever);  
  
            escrever.printf("%s%s", usuario, senha);  
              
            escrever.close();  
  
        } catch (IOException e) {  
            e.printStackTrace(); // Adicionei um printStackTrace()
            System.out.println(e.getMessage());  
        }  
    } // Fim do Construtor  
} // Fim da Classe GeradorLogin
:thumbup:
W
mcirqueira:
Arrumei a classe GeradorLogin:
import java.io.File;  
import java.io.IOException;  
import java.io.FileWriter;  
import java.io.PrintWriter;  
  
public class GeradorLogin {  
  
    File arquivo; // Pra que serve esse File?
    FileWriter arquivoEscrever;  
    PrintWriter escrever;  
  
    public GeradorLogin(String usuario, String senha) {  
        try {  
            arquivo = new File("login.txt");  // Desnecessario....
  
            if (!arquivo.exists()) arquivo.createNewFile(); // Se o arquivo não existe, cria-o
              
            arquivoEscrever = new FileWriter("login.txt"); // Não precisa colocar false, false já é o padrão
              
            escrever = new PrintWriter(arquivoEscrever);  
  
            escrever.printf("%s%s", usuario, senha);  
              
            escrever.close();  
  
        } catch (IOException e) {  
            e.printStackTrace(); // Adicionei um printStackTrace()
            System.out.println(e.getMessage());  
        }  
    } // Fim do Construtor  
} // Fim da Classe GeradorLogin
:thumbup:

Obrigado pelas correções, tô meio confuso ainda com a parte de interface e arquivos... :lol:

mcirqueira
wesleyosilva:
mcirqueira:
Arrumei a classe GeradorLogin:
import java.io.File;  
import java.io.IOException;  
import java.io.FileWriter;  
import java.io.PrintWriter;  
  
public class GeradorLogin {  
  
    File arquivo; // Pra que serve esse File?
    FileWriter arquivoEscrever;  
    PrintWriter escrever;  
  
    public GeradorLogin(String usuario, String senha) {  
        try {  
            arquivo = new File("login.txt");  // Desnecessario....
  
            if (!arquivo.exists()) arquivo.createNewFile(); // Se o arquivo não existe, cria-o
              
            arquivoEscrever = new FileWriter("login.txt"); // Não precisa colocar false, false já é o padrão
              
            escrever = new PrintWriter(arquivoEscrever);  
  
            escrever.printf("%s%s", usuario, senha);  
              
            escrever.close();  
  
        } catch (IOException e) {  
            e.printStackTrace(); // Adicionei um printStackTrace()
            System.out.println(e.getMessage());  
        }  
    } // Fim do Construtor  
} // Fim da Classe GeradorLogin
:thumbup:

Obrigado pelas correções, tô meio confuso ainda com a parte de interface e arquivos... :lol:


Ah tá!
O File está aí para criar o arquivo... :wink:

Criado 26 de maio de 2012
Ultima resposta 26 de mai. de 2012
Respostas 5
Participantes 3