2014-10-30 78 views
1

我试图用一个TextField得到一些用户输入:无法显示用户输入一个文本框

public void render() { 
    Gdx.gl.glClear(GL11.GL_COLOR_BUFFER_BIT); 
    Gdx.gl.glClearColor(0, 0, 0, 0); 

    batch.begin(); 
    batch.end(); 
    stage = new Stage(); 
    Gdx.input.setInputProcessor(stage); 
    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json")); 

    TextButton btnLogin = new TextButton("Click", skin); 
    btnLogin.setPosition(300, 300); 
    btnLogin.setSize(300, 60); 
    btnLogin.addListener(new ClickListener() { 
     public boolean touchDown(InputEvent e, float x, float y, int point, int button) { 
      System.out.println(txfUsername.getText()); 
      return false; 
     } 
    }); 

    txfUsername = new TextField("", skin); 
    txfUsername.setPosition(300, 250); 
    txfUsername.setSize(300, 40); 

    stage.addActor(txfUsername);   
    stage.addActor(btnLogin); 

    stage.act(); 
    stage.draw(); 
} 

我得到的是一个空白领域。用户无法以任何方式与其进行交互。

我按照this video的说明操作 如何使文本框可编辑?

+1

按钮作品最后版本? – cfrick 2014-10-30 19:56:01

+0

是的,当文本与TextField关联时它正在工作 – Twile 2014-10-30 20:13:34

回答

3

您在render方法中使用txfUsername = new TextField ("", skin);。这将在每个渲染器上从头创建一个新的TextField。

public void render() { 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 


    batch.begin(); 
    // do other rendering ... 
    batch.end(); 

    Gdx.app.log("MyTextField", txfUsername.getText()); 

    stage.act(Gdx.graphics.getDeltaTime()); 
    stage.draw(); 
} 

在你的类变量:

private TextButton btnLogin; 
TextField txfUsername; 

在你的方法showcreate(不render):

@Override 
public void show() { 

    btnLogin = new TextButton("Click", skin); 

    btnLogin.setPosition(300, 300); 
    btnLogin.setSize(300, 60); 
    btnLogin.addListener(new ClickListener() { 
     public boolean touchDown(InputEvent e, float x, float y, int point, int button) { 
      System.out.println(txfUsername.getText()); 
      return false; 
     } 
    }); 

    txfUsername = new TextField("", skin); 
    txfUsername.setPosition(300, 250); 
    txfUsername.setSize(300, 40); 

    stage.addActor(txfUsername);   
    stage.addActor(btnLogin); 
} 

使用txfUsername.getText();田间

编辑写的:我不知道你的工作方式ED与GL11,如果GL10,我能理解你一个发生故障,如果你在GL10得到错误,你应该更新libgdx,GL10是一个界面,我认为在libgdx尚未带来

+0

这很好,谢谢! – Twile 2014-10-30 20:46:42

+0

@Twile欢迎来到StackOverflow!如果这个答案解决了你的问题,请接受它。 – 2014-10-31 12:32:51