Java 获取键盘用户输入

Java 获取键盘用户输入,java,slick2d,Java,Slick2d,我正在尝试使用slick2D库制作一个简单的游戏,用户必须在某种文本框中输入自己的名字。我在谷歌上搜索了一些关于如何获取用户输入的教程,我得到的唯一一件事就是可以检查是否按下了指定的键。我还尝试使用内置的TextField,但它在BasicGameState类中似乎不起作用。除此之外,我找不到任何类型的教程来获取用户输入。检查每一个键似乎效率很低。理想情况下,我希望检查用户是否点击了一个键,无论该键是什么,我都希望将其添加到一个字符串变量中,以后可能会使用该变量。我为内置文本字段尝试的代码如下

我正在尝试使用slick2D库制作一个简单的游戏,用户必须在某种文本框中输入自己的名字。我在谷歌上搜索了一些关于如何获取用户输入的教程,我得到的唯一一件事就是可以检查是否按下了指定的键。我还尝试使用内置的TextField,但它在BasicGameState类中似乎不起作用。除此之外,我找不到任何类型的教程来获取用户输入。检查每一个键似乎效率很低。理想情况下,我希望检查用户是否点击了一个键,无论该键是什么,我都希望将其添加到一个字符串变量中,以后可能会使用该变量。我为内置文本字段尝试的代码如下 包装场景

import static javagame.Main.*;

import org.newdawn.slick.*;
import org.newdawn.slick.gui.TextField;
import org.newdawn.slick.state.*;

public class Scene01 extends BasicGameState{

    public static void drawBG(Graphics g){
        g.setColor(new Color(0, 0, 0, 255));
        g.fillRect(0, 0, displayWidth, displayHeight);
        g.setColor(new Color(255, 255, 255, 2));
        g.fillRect(0, 0, displayWidth, displayHeight);
        int circleXY, circleWH;
        for(int i = 0; i < 100; i++){
            circleWH = 500 - (i * 5);
            circleXY = (int) (-50 + (i * 2.5));
            g.setColor(new Color(255, 255, 255, 1));
            g.fillOval(circleXY , circleXY, circleWH, circleWH);
        }
    }

    public  String inputText;
    private boolean active = false;
    private Color activeColor = new Color(0, 255, 255);
    private Color inactiveColor = new Color(0, 128, 128);
    private Color colorRn = inactiveColor;
    private TextField textField;

    String str;

    public Scene01(int state){}

    public void init(GameContainer gc, StateBasedGame sbg)throws SlickException {
        textField = new TextField(gc, gc.getDefaultFont(), 240, 240, 100, 100);
        textField.setBackgroundColor(colorRn);
        textField.setBorderColor(Color.black);
    }

    public void update(GameContainer gc, StateBasedGame sbg, int delta)throws SlickException {

    }

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g)throws SlickException {
        g.setColor(Color.white);
        g.fillRect(0, 0, displayWidth, displayHeight);
        //drawBG(g);
        textField.render(gc, g);
    }

    public int getID() {
        return 2;
    }

}
import static javagame.Main.*;
导入org.newdawn.slick.*;
导入org.newdawn.slick.gui.TextField;
导入org.newdawn.slick.state.*;
公共类Scene01扩展了BasicGameState{
公共静态空白图BG(图g){
g、 setColor(新颜色(0,0,0,255));
g、 fillRect(0,0,displayWidth,displayHeight);
g、 setColor(新颜色(255、255、255、2));
g、 fillRect(0,0,displayWidth,displayHeight);
int circleXY,circleWH;
对于(int i=0;i<100;i++){
圆圈H=500-(i*5);
circleXY=(int)(-50+(i*2.5));
g、 setColor(新颜色(255、255、255、1));
g、 Fillova(circleXY,circleXY,circleWH,circleWH);
}
}
公共字符串输入文本;
private boolean active=false;
私有颜色activeColor=新颜色(0、255、255);
私有颜色不活动颜色=新颜色(0、128、128);
专用颜色colorRn=不活动颜色;
私有文本字段文本字段;
字符串str;
公共场景01(国际州){}
public void init(GameContainer gc,StateBasedGame sbg)引发异常{
textField=新的textField(gc,gc.getDefaultFont(),240240100100);
textField.setBackgroundColor(colorRn);
textField.setboordcolor(Color.black);
}
公共无效更新(GameContainer gc、StateBasedGame sbg、int delta)引发异常{
}
公共void呈现(GameContainer gc、StateBasedGame sbg、Graphics g)引发异常{
g、 setColor(Color.white);
g、 fillRect(0,0,displayWidth,displayHeight);
//drawBG(g);
textField.render(gc,g);
}
公共int getID(){
返回2;
}
}

这里有一种方法可以打开一个小面板,显示您的偏好信息和一个框,用户可以在其中输入答案(im也在我的手机atm上,请原谅任何错误):

首先将其放入导入中(在每个公共类之前):

然后在程序中键入以下内容:

String X;
Int Y;

X=JOptionPane.showInputDialog("Enter your name");
Y=Integer.parseInt(s);

~希望这有帮助

我让它工作了,非常感谢。我会考虑定制它,使它看起来比atm机更好。无论如何,谢谢:)
String X;
Int Y;

X=JOptionPane.showInputDialog("Enter your name");
Y=Integer.parseInt(s);