Can´t change my screen

I can put my game change the screen
this is my code
class controle tela

package meujogo.nifty;
import mygame.Main;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author Pedro
 */
public class ControleTela implements ScreenController {
    Main jogo; //Usado para acessar os dados do jogo
    Nifty nifty;  //Usado para interagir com a tela
      private Element formLayer; //Esse objeto conterá a referência a layer da tela referente ao formulário
      private FormularioController formController; 

    public ControleTela (Main jogo){
        this.jogo=jogo;
    }
 
 
     public void bind(Nifty nifty, Screen screen) {
        System.out.println("bind( " + screen.getScreenId() + ")");
        this.nifty=nifty;
         
        //Aqui eu busco na tela a camada de Formulário
        formLayer= screen.findElementByName("formLayer");
        if (formLayer!=null){ 
            formController=formLayer.getControl(FormularioController.class);
         //  formController.getUsername("Username");
          // formController.getpassord("Password");
            formController.setControleTela(this);
            System.out.println("FormController Encontrado!");
       // if(formController.login().equals(1)){
        // System.out.println("1");
       // }
        }
 
    }    
   
 
    public void onStartScreen() {
        System.out.println("onStartScreen");
    }
 
    public void onEndScreen() {
        System.out.println("onEndScreen");
    }
 
    public void quit(){
        nifty.gotoScreen("end");
    }

 
}
class formularcontrol package meujogo.nifty; import java.util.Properties;

import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.controls.Controller;
import de.lessvoid.nifty.controls.TextField;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.input.NiftyInputEvent;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.xml.xpp3.Attributes;
import java.sql.SQLException;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;

/*

  • Esse controle é responsável pelo tratamento do formulário, todos os eventos referentes ao

  • formulário devem passar por aqui.

  • Note: você pode chamar métodos dessa classe através do ControleTela.

  • Exemplo: formController.setNome(“Novo Nome”);
    */
    public class FormularioController implements Controller {
    Screen screen;
    Element element;

    //Referencia a objetos da tela
    TextField Username;
    TextField Password;
    ControleTela controleTela; //Caso seja necessário chamar algum método do controle
    //principal já temos a referência

    @Override
    public void bind(Nifty nifty, Screen screen, Element element, Properties arg3,
    Attributes arg4) {
    this.screen=screen;
    this.element=element;

     Username= element.findNiftyControl("username", TextField.class);
     Password= element.findNiftyControl("password", TextField.class);
    // elResultado= element.findNiftyControl("resultado", TextField.class);
    

    }
    public String login() {
    Date data = new Date(System.currentTimeMillis());
    Time hora = new Time(System.currentTimeMillis());
    SimpleDateFormat formatarDate = new SimpleDateFormat(“yyyy-MM-dd”);
    System.out.println(formatarDate.format(data));

     try {
         String falhou = "O UTILIZADOR FALHOU O LOGIN";
         String sucesso = "LOGIN FOI FEITO COM SUCESSO";
         String username =Username.getText();
         String password = Password.getText();
         System.out.println(" "+username+" "+password);
         classes.users ola = new classes.users();
     
         if (ola.retrievelogin(username, password)) {
    

    if (ola.nivelacesso(username) == 1) {
    String tipo = “Administrador”;
    javax.swing.JOptionPane.showMessageDialog(null, tipo, “Erro”, javax.swing.JOptionPane.INFORMATION_MESSAGE);
    return tipo;

    } else {
    String tipo = “Funcionario”;
    javax.swing.JOptionPane.showMessageDialog(null, tipo, “Erro”, javax.swing.JOptionPane.INFORMATION_MESSAGE);
    return tipo;
    //
    // MENUPRINCIPAL mp = new MENUPRINCIPAL(username, tipo);
    // h.setusername(username);
    //h.settipo(sucesso);
    // h.setData(data);
    // h.sethora(hora);
    // h.setCategoria(“Login”);
    //h.gravaficheio();
    //mp.setVisible(true);
    //mp.setAlwaysOnTop(true);

             }
           //  this.dispose();
    
         } else {
             javax.swing.JOptionPane.showMessageDialog(null, "Utilizador ou Password Incorrectos", "Erro", javax.swing.JOptionPane.INFORMATION_MESSAGE);
      return "erro";
             //      h.setusername(username);
         //    h.settipo(falhou);
           // h.setData(data);
           // h.sethora(hora);
             // h.setCategoria("Login");
             //h.gravaficheio();
         }
     } catch (SQLException ex) {
        System.out.println(ex);
        // javax.swing.JOptionPane.showMessageDialog(null, ex.getMessage(), "Tente Novamente", javax.swing.JOptionPane.INFORMATION_MESSAGE);
    
    }
     return null;
    

    }
    public void exit() {
    System.exit(0);
    }
    /* /
    /

    • Método chamado quando o usuário clica no botão “Calcula”
      */
      /*public void calcula(){
      elResultado.setText(Username.getText()+ Password.getText());
      }
      */
      public void getUsername(String s){
      Username.setText(s);
      }
      public void getpassord(String s){
      Password.setText(s);
      }

    @Override
    public void init(Properties arg0, Attributes arg1) {
    // TODO Auto-generated method stub

    }

    @Override
    public boolean inputEvent(NiftyInputEvent arg0) {
    // TODO Auto-generated method stub
    return false;
    }

    @Override
    public void onFocus(boolean arg0) {
    // TODO Auto-generated method stub

    }

    @Override
    public void onStartScreen() {
    // TODO Auto-generated method stub

    }

    public ControleTela getControleTela() {
    return controleTela;
    }

    public void setControleTela(ControleTela controleTela) {
    this.controleTela = controleTela;
    }
    }

1 Like

4 Likes

i want do is when the username and password is correct i want change the screen but i don´t know how i make

@nehon
@normen
@Momoko_Fan
@pspeed

Friend, what you wrote in english cant be understood.

Pelo que vi voce fala portugues…
Talvez seja o caso de me explicar que eu faço o “translation” :slight_smile:

Who dares wake me up in my slumber?

@Kammikazy, it’s been a long time since I used nifty, but as far as i rememeber there is a nifty.gotoScreen(“screenName”) method.

Please refrain from doing that

Yeah, since I’ve been (rudely) invoked specifically as well I’ll give my advice that I usually hold close to the vest…

I stopped using nifty 4 years ago because I found it too painful for my style of development. I recommend you do the same I guess. Probably not helpful to your specific problem but since you asked me specifically…

what you sujest to use like gui

I’m sorry, I didn’t mean to offend anyone,
I thought it was a good idea because this question looked hard for normal users, so i thought by calling the staffs the problem will be fixed even more faster…

I’ll think before doing something from now on

the problem i can return the result of login function it is in FormularioController to my other class ControleTela
this is the code

package meujogo.nifty;
import com.jme3.app.state.AbstractAppState;
import mygame.Main;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;

 

/**
 *
 * @author Pedro
 */
public class ControleTela extends AbstractAppState implements ScreenController {
    Main jogo; //Usado para acessar os dados do jogo
    Nifty nifty;
     private Screen screen;//Usado para interagir com a tela
      private Element formLayer; //Esse objeto conterá a referência a layer da tela referente ao formulário
      private FormularioController formController; 

    public ControleTela (Main jogo){
        this.jogo=jogo;
    }
 
  public void startGame(String nextScreen) {
    nifty.gotoScreen(nextScreen);  // switch to another screen
  }
     public void bind(Nifty nifty, Screen screen) {
        System.out.println("bind( " + screen.getScreenId() + ")");
        this.nifty=nifty;
         
        //Aqui eu busco na tela a camada de Formulário
        formLayer= screen.findElementByName("formLayer");
        if (formLayer!=null){ 
            formController=formLayer.getControl(FormularioController.class);
            FormularioController ola = new FormularioController();
           //ola.login();
        //if(formLayer==null){
       // System.out.println();
        //}else
         //formLayer.getControl(FormularioController.class.login());
            formController.setControleTela(this);
            
            
   
        }
  
    }    
   
 
    public void onStartScreen() {
        System.out.println("onStartScreen");
    }
 
    public void onEndScreen() {
        System.out.println("onEndScreen");
    }
 
    public void quit(){
        nifty.gotoScreen("end");
    }

 
}
package meujogo.nifty;
import java.util.Properties;
 
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.controls.Controller;
import de.lessvoid.nifty.controls.TextField;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.elements.render.TextRenderer;
import de.lessvoid.nifty.input.NiftyInputEvent;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.xml.xpp3.Attributes;
import java.sql.SQLException;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/*
 * Esse controle é responsável pelo tratamento do formulário, todos os eventos referentes ao 
 * formulário devem passar por aqui.
 * Note: você pode chamar métodos dessa classe através do ControleTela.
 * Exemplo: formController.setNome("Novo Nome");
 */
public class FormularioController implements Controller {
    Screen screen;
    Element element;
    //Referencia a objetos da tela
    TextField Username;  
    TextField Password;
 String elResultado;
    ControleTela controleTela;
    // private Nifty nifty;//Caso seja necessário chamar algum método do controle 
                              //principal já temos a referência
     
     
    @Override
    public void bind(Nifty nifty, Screen screen, Element element, Properties arg3,
            Attributes arg4) {
        this.screen=screen;
        this.element=element;
         
        Username= element.findNiftyControl("username", TextField.class);
        Password= element.findNiftyControl("password", TextField.class);
 
       //elResultado= element.findControl("resultado",String.);
 
    }
    public  String login() {
        Date data = new Date(System.currentTimeMillis());
        Time hora = new Time(System.currentTimeMillis());
        SimpleDateFormat formatarDate = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(formatarDate.format(data));
        String tipo="";
        try {
            String falhou = "O UTILIZADOR FALHOU O LOGIN";
            String sucesso = "LOGIN FOI FEITO COM SUCESSO";
            String username =Username.getText();
            String password = Password.getText();
         //   System.out.println(" "+username+" "+password);
            classes.users ola = new classes.users();
        
            if(Username.getText().isEmpty()){
               javax.swing.JOptionPane.showMessageDialog(null,"Username não pode estar vazia", "Erro", javax.swing.JOptionPane.INFORMATION_MESSAGE);
           }
              else if (Password.getText().isEmpty()){
                javax.swing.JOptionPane.showMessageDialog(null,"Password nao pode estar vazia", "Erro", javax.swing.JOptionPane.INFORMATION_MESSAGE);
        //   
               }
            else
            if (ola.retrievelogin(username, password)) {

            
     if (ola.nivelacesso(username) == 1) {
              tipo = "Administrador";
           javax.swing.JOptionPane.showMessageDialog(null, tipo, "Sucesso", javax.swing.JOptionPane.INFORMATION_MESSAGE);
     // nifty.gotoScreen("server");
        //elResultado=tipo;
      //element.getRenderer(TextRenderer.class).setText((String)(tipo) + ""); 
      //System.out.println(elResultado);

      //    return tipo;
               
     
     } else {
                  tipo = "Funcionario";
                     // return tipo;
      
                }
          

            } else {
                javax.swing.JOptionPane.showMessageDialog(null, "Utilizador ou Password Incorrectos", "Erro", javax.swing.JOptionPane.INFORMATION_MESSAGE);
        
            }
        } catch (SQLException ex) {
           System.out.println(ex);
           // javax.swing.JOptionPane.showMessageDialog(null, ex.getMessage(), "Tente Novamente", javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }
     System.out.println(tipo);
        return tipo;
    }
   
    public void exit() {
    System.exit(0);
     }
  /*  */ 
    /*
     * Método chamado quando o usuário clica no botão "Calcula" 
     */
   
     
    public void getUsername(String s){
        Username.setText(s);
    }
    public String getlogin(String tipo){
        System.out.println(tipo);
    return tipo;
    }
public void getpassord(String s){
        Password.setText(s);
    }


     
    @Override
    public void init(Properties arg0, Attributes arg1) {
        // TODO Auto-generated method stub
         
    }
 
 
 
     
    @Override
    public boolean inputEvent(NiftyInputEvent arg0) {
        // TODO Auto-generated method stub
        return false;
    }
 
    @Override
    public void onFocus(boolean arg0) {
        // TODO Auto-generated method stub
         
    }
 
    @Override
    public void onStartScreen() {
        // TODO Auto-generated method stub
         
    }
 
 
    public ControleTela getControleTela() {
        return controleTela;
    }
 
 
    public void setControleTela(ControleTela controleTela) {
        this.controleTela = controleTela;
    }
}
identar texto pré-formatado até 4 espaços

I think you first need to do the tutorials, understand a bit more on how java works and mainly read this :

https://www.mikeash.com/getting_answers.html

How to use codeblocks, please read this:

i change my post what i doing wrong
i can´t change my gui

Everything in your post are wrong, even the title : “Can change my screen” really means “Eu posso mudar minha tela” in your language. So if you can, nice for you, but I really think you mean “Can’t change my screen”.
If you cant, why you cant ? Dont just trow thousends of code lines for us with out saying what is going on, peaple will not take your code, try to figure out what you want, compile it, fix it for you just because you post it here.
Post something like, when I press the button, nothing happens, or when I press the button, the follow error occurs and peaple will be able to help you.

To portuguese :

Tudo no seu post esta errado, provavelmente voce quer dizer “Cant change my screen” no titulo por exemplo.
Se voce nao consegue, especifique o porque, as pessoas nao vao simplesmente pegar seu codigo, tentar descobrir o que voce quer, compilar e arrumar pra voce.
Poste alguma coisa como “quando eu aperto o botao nada acontece” ou “quando eu aperto o botao o seguinte erro aparece” e as pessoas vao conseguir te ajudar.

finaly i find the problem :smile: :smile:
in class controlTela i add this code

public void login(){
if(formController.getlogin().equals("Administrador")){
System.out.println("ENTROU COMO ADMINISTRADOR");
 nifty.fromXml("Interface/server.xml", "start",this);
}
 }

what you suggest to change of gui use multiple files like screen1.xml screen2.xml and use nifty.fromXml(“Interface/server.xml”, “start”,this);
or use mutiple hubs

topic can be close the problem is be solved