tenho um JFrame bem básico aqui, com JTextField de login e senha, e ao clicar o botao de login, se o login e senha estiverem errados, eu jogo na tela um JOptionPane.showMessageDialog, dizendo que os dados estão incorretos. So que ao clicar OK no JOptionPane, não é mais possivel editar os JTextField de login e senha?
tenho um JFrame bem básico aqui, com JTextField de login e senha, e ao clicar o botao de login, se o login e senha estiverem errados, eu jogo na tela um JOptionPane.showMessageDialog, dizendo que os dados estão incorretos. So que ao clicar OK no JOptionPane, não é mais possivel editar os JTextField de login e senha?
Como resolvo isso?
Obrigado. [/quote]
posta algum trecho de codigo… falando por cima não tem como ajudar
public class Frame extends JFrame{
private JTextField login, senha;
private JButton botao;
public Frame(){
//declaracoes dos jtextfield e JBUtton
ButtonHandler handler = new ButtonHandler();
botao.addActionListener(handler);
}
private class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
Sistema.login();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//Na Classe sistema
public static void login() throws IOException {
if (validaLogin(frame.getLogin(), frame.getSenha())) {
JOptionPane.showMessageDialog(null, "Seja bem vindo " + usuarioLogado.getNome());
}
else
JOptionPane.showMessageDialog(null, "Login e/ou senha errados");
}
//Aqui ele deveria deixar eu editar login e senha de novo, mas nao deixa. O JFrame Continua aberto
[/quote]
certo… quando vc fala que nao consegue inserir os dados para tentar novamente isso quer dizer que o jframe trava? ou que o JOptionPane trava e nao deixa vc fazer mais nada?
[quote=charleston10]Arruma a identação e Abre e Fecha as Chaves ‘{ }’ no lugar certo.
Ta tudo errado isso, e o erro esta aí.[/quote]
cara ta certo o que ele postou… só que ta picotado… um pouco de cada classe afinal deve ser um sistema de uma empresa, nao tem como sair liberando codigo de uma classe toda…
Presta bem atenção olha lá… a Chave do inicio do Frame esta fechando antes do Metodo Void Main…
Por isso, como que vai chamar a função? Sendo que não esta dentro do bloco, ele nao reconhece, por isso q nao acontece nada…
Presta bem atenção olha lá… a Chave do inicio do Frame esta fechando antes do Metodo Void Main…
Por isso, como que vai chamar a função? Sendo que não esta dentro do bloco, ele nao reconhece, por isso q nao acontece nada…
[/quote]
Cara esse não é o código original, so escrevi um resumo, pra ele entender o que esta acontecendo. O programa esta compilando OK.
Coloque um System.out.println(“passou”); após o try catch que chama a função de login, pra ver se ele pelo menos está passando ali, se estiver, o problema não está nos eventos…
Ou debuga e encontra o erro fácil fácil, só ir executando linha por linha
@author guga
*/
public class clsEntrar implements interfaceEntrar {
//objetos
clsUsuario objUsuario = new clsUsuario();
//variavel para guardar comandos SQLs
String sSQL="";
//metodo construtor
public clsEntrar(){
}
public boolean Entrar() throws Exception {
//conecta seu banco de dados
boolean entrou =false;
sSQL="SELECT * FROM usuarios WHERE usuario ="+objUsuario.getUsuario+" AND senha ="+objUsuario.getSenha;
try {
Statement sta = null;
ResultSet res = null;
sta = cnn.createStatement(res.TYPE_SCROLL_INSENSITIVE,res.CONCUR_READ_ONLY);;
res = sta.executeQuery(sSQL);
if(res.next()){
entrou = true;
}
}catch(Exception e){
e.printStackTrace();
}
return entrou;
}
}[/code]
public interface interfaceEntrar {
public boolean Entrar() throws Exception;
}
[code]/**
*
@author guga
*/
public class clsUsuario {
private static String Usuario;
/**
@return the Usuario
*/
public static String getUsuario() {
return Usuario;
}
/**
@param aUsuario the Usuario to set
*/
public static void setUsuario(String aUsuario) {
Usuario = aUsuario;
}
private String Senha;
/**
@return the Senha
*/
public String getSenha() {
return Senha;
}
/**
@param Senha the Senha to set
*/
public void setSenha(String Senha) {
this.Senha = Senha;
}
}
[/code]
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* jfEntrar.java
*
* Created on 30/10/2012, 20:57:41
*/
/**
*
* @author guga
*/
public class jfEntrar extends javax.swing.JFrame {
/** Creates new form jfEntrar */
public jfEntrar() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jtUsuario = new javax.swing.JTextField();
jtSenha = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jbEntrar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Usuário");
jLabel2.setText("Senha");
jbEntrar.setText("Entrar");
jbEntrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbEntrarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jbEntrar)
.addComponent(jtSenha, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jtUsuario, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jtUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jbEntrar)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jbEntrarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//pega dados do formulario
PegaDados();
clsEntrar painelLogar = new clsEntrar();
try {
if(painelLogar.Entrar()){
new jfOutraTela().setVisible(true);
}
} catch (Exception ex) {
Logger.getLogger(jfEntrar.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void PegaDados(){
clsUsuario objUsuario = new clsUsuario();
objUsuario.setUsuario(jtUsuario.getText());
objUsuario.setSenha(jtSenha.getText());
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new jfEntrar().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JButton jbEntrar;
private javax.swing.JTextField jtSenha;
private javax.swing.JTextField jtUsuario;
// End of variables declaration
}
Ta bem básico, só pra você ter uma base e ajeitar ai como vc quiser…