Olá, estou desenvolvendo um sistema em java que faça cadastros e tals. Criei uma tela de login e tals, mas aí começou os meus problemas. O usuário tem que digitar o seu login e também sua senha, mas quando eu clico no botão enviar, ele não tá executando os camandos certos, e exibe mensagem de erro que foi programada para mostrar somente se o login e a senha não estiverem certos. O problema é que ja testei para ser de outra forma, mas ele não está executando…
criei duas variaves, como segue abaixo:
Stringnome,senha;
No botão entrar, fiz os seguintes comandos:
nome=tflogin.getText();
senha=jpsenha.getText();
if ((nome=="ramon") && (senha=="oi")) {
Inicial.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"Não foi possível fazer o login");
}
porém, não está funcionando. Alguém sabe me dizer o porque e como solucionar o problema?
tente usar o método equals para strings o invés de “==”…
Ex: nome.equals(“ramon”)
Seu código ficaria:
if ((nome.equals("ramon")) && (senha.equals("oi"))) {
Inicial.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"Não foi possível fazer o login");
}
Ultralogic
Humm, valeu man, soh tem mais um problema…
ele não está reconhendo a linha Inicial.setVisible(true)
tipo, tah dizendo “non-static method setVisible(boolean) cannot be reference from a static context…”
e sei la, o resto ta tudo certo…
J
JavaNewbie
Ultralogic:
Humm, valeu man, soh tem mais um problema…
ele não está reconhendo a linha Inicial.setVisible(true)
tipo, tah dizendo “non-static method setVisible(boolean) cannot be reference from a static context…”
e sei la, o resto ta tudo certo…
Eu imagino q Inicial seja um JFrame, certo?
Se for isso, primeiro crie o objeto e aí chame o setVisible…
Ex:
Inicial inicial = new Inicial(); inicial.setVisible(true);
Ultralogic
humm
sim, é um JFrame,
la no JFrame Inicial eu criei as linhas do
Inicial Inicial=new Inicial();
logo abaixo do 1° Public
blz, aí não deu erro, e na tela do Login criei a linha Inicial.setVisible(true);, como postei no código acima…
mas não está funcionando, ele não ta nem reconhecedo…
axei estranho, pq a base é a mesma para todas as telas, e tipo, se eu colocar o codigo
System.exit(0); ele fecha a tela…
sei la cara, to na dúvida…
Allan_Barcelos
Olha cara fiz um projeto parecido:
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectOutputStream;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;publicclassFrameLoginextendsFrameInicial{PanelLoginpl;publicFrameLogin(Cofrinhocof){setTitle("Tela de Login");this.add(pl=newPanelLogin(this,cof));this.pack();this.add(pl);this.setLocationRelativeTo(null);this.setLayout(null);this.setContentPane(pl);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);this.setResizable(false);this.setSize(pl.getSize());}publicvoidfechaJanela(){this.setVisible(false);this.dispose();}classPanelLoginextendsPanelInicial{JPasswordFieldpf;JTextFieldtf;JButtonok;Stringnome;Stringsenha;Strings;booleanstatusNome;booleanstatusSenha;privateJFrameframe;JLabeltx1;JLabelpf1;privateCofrinhoc;intcount=0;publicPanelLogin(JFramef,Cofrinhocof){super(f);c=cof;frame=f;tx1=newJLabel("Digite o nome");tf=newJTextField("************");tf.addActionListener(this);pf1=newJLabel("Digite a senha");pf=newJPasswordField("*********");pf.addActionListener(this);ok=newJButton("Seguir");ok.addActionListener(this);JPanelbuttonPanel=newJPanel();//use FlowLayoutJPanelbuttonPanel2=newJPanel();JPanelbuttonPanel3=newJPanel();buttonPanel.add(tx1);buttonPanel.add(tf);buttonPanel2.add(pf1);buttonPanel2.add(pf);buttonPanel3.add(ok);add(buttonPanel,BorderLayout.PAGE_START);add(buttonPanel2,BorderLayout.CENTER);add(buttonPanel3,BorderLayout.PAGE_END);}publicbooleanvalidaLogin(Stringlogin,Stringsenha){booleanusuario=false;booleanadm=false;if(c.getNome().equals(login)==true&&c.getSenha().equals(senha)){usuario=true;}if(login.equals(c.getNomeAdm())==true&&senha.equals(c.getSenhaAdm())==true){adm=true;}if(usuario==true|adm==true)returntrue;elsereturnfalse;}privatevoidgravaObjeto(Filef,Cofrinhoo){try{FileOutputStreamfos=newFileOutputStream(f);ObjectOutputStreamos=newObjectOutputStream(fos);os.writeObject(o);os.close();}catch(IOExceptione){System.out.println("Erro ao gravar objeto.");}}publicvoidactionPerformed(ActionEvente){Stringresp;booleanstatus;if(c!=null)if(e.getSource()==ok){if(c.getNome()!=null&&c.getSenha()!=null&&count<2){resp=newString(pf.getPassword());status=this.validaLogin(tf.getText(),resp);if(status==true){FramePrincipalfp=newFramePrincipal(c);this.setVisible(false);// Faz "desaparecer" essa janelathis.fecha();}elseif(status==false){JOptionPane.showMessageDialog(null,"Nome, ou senha Incorretos!","Failed to Login!",JOptionPane.ERROR_MESSAGE);count++;}}elseif(count>=2){JOptionPane.showMessageDialog(null,"O programa vai ser encerrado!","Failed to Login!",JOptionPane.ERROR_MESSAGE);c.setNome(c.getNomeAdm());c.setSenha(c.getSenhaAdm());Filef=newFile(caminho);// ver essa linhathis.gravaObjeto(f,c);fecha();System.exit(0);}else{c=newCofrinho();resp=newString(tf.getText());c.setNome(resp);resp=newString(pf.getPassword());c.setSenha(resp);status=this.validaLogin(tf.getText(),resp);if(status==true){FramePrincipalfp=newFramePrincipal(c);this.setVisible(false);this.fecha();}}}}publicvoidfecha(){frame.dispose();}}}
A classe "cuida" da janela que faz a parte do login
J
JavaNewbie
Ultralogic:
humm
sim, é um JFrame,
la no JFrame Inicial eu criei as linhas do
Se vc pretende abrir a janela a partir da tela de login, vc deve criar o objeto da nova janela na tela de login.
Faça assim:
if((nome.equals("ramon"))&&(senha.equals("oi"))){Inicialinicial=newInicial();inicial.setVisible(true); }else{JOptionPane.showMessageDialog(null,"Não foi possível fazer o login"); }
Ultralogic:
blz, aí não deu erro, e na tela do Login criei a linha Inicial.setVisible(true);, como postei no código acima…
mas não está funcionando, ele não ta nem reconhecedo…
axei estranho, pq a base é a mesma para todas as telas, e tipo, se eu colocar o codigo
System.exit(0); ele fecha a tela…
sei la cara, to na dúvida…
Na sua chamada em “Inicial.setVisible(true);”, vc está tentando chamar um método estático da classe Inicial e o método setVisible não é estático.
O System.exit(0); serve para terminar a execução do seu programa…