Java Lanterna - 如何从文本框中获取输入?

标签 java string user-interface textbox lanterna

我是一个相对较新的 Java 程序员(大约两个月的经验),我不知道如何将数据输入到 Lanterna 中。 (用于创建终端用户界面的库)将文本框转换为字符串以备后用。

这是我的代码:

//Variables (that I can't seem to populate)
final String usernameIn = null;
final String passwordIn = null;

//Username panel, contains Label and TextBox
Panel username = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL);
username.addComponent(new Label("Username: "));
username.addComponent(new TextBox(null, 15));
addComponent(username);

//Password panel, contains label and PasswordBox
Panel password = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL);
password.addComponent(new Label("Password: "));
password.addComponent(new PasswordBox(null, 15));
addComponent(password);

//Controls panel, contains Button w/ action
Panel controls = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL);
controls.addComponent(new Button("Login", new Action()
{
    public void doAction() {
        MessageBox.showMessageBox(getOwner(), "Alert", "You entered the username " + usernameIn + " and password " + passwordIn + ".");
    }
}));
addComponent(controls);

任何帮助将不胜感激。我到处寻找信息,但关于 Lanterna 的信息确实不多它是我能找到的唯一允许我制作终端应用程序的最新 Java 库。 请注意:我知道上面的代码中没有任何内容可以处理输入的数据,我省略了我所有的尝试,因为它们导致一页又一页的错误(当使用错误的函数时这是可以预料的) ).

最佳答案

我查看了 Lanterna 代码:TextBox 有一个 getText() 方法。

作为一个想法:

Panel username = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL);
username.addComponent(new Label("Username: "));
TextBox userBox = new TextBox(null, 15);
username.addComponent(userBox);
addComponent(username);
// ... and later elsewhere 
usernameIn = userBox.getText();

Shure,您需要引用 userBox 以便稍后在代码的其他地方获取内容。

Lanterna 还有一个 ComponentListener 接口(interface)来响应值的变化:

Panel username = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL);
username.addComponent(new Label("Username: "));
TextBox userBox = new TextBox(null, 15);
userBox.addComponentListener(new ComponentListener() {
    void onComponentValueChanged(InteractableComponent component) {
         usernameIn = ((TextBox)component).getText();
    }
});

username.addComponent(userBox);
addComponent(username);

这看起来更干净。

关于Java Lanterna - 如何从文本框中获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23043472/

相关文章:

java - Drools 规则取决于来自 JDK Map 的知识(不在非 JDK 类中)

java - 从循环(Arraylist)和几个单独的标志到mysql命令行制作一个字符串

c++ - 使用 C/C++ 高效反序列化由 float 、标记和空行组成的字符串

java - 图像预览 - Android

java - 将对象添加到对象数组中

java - 无法捕获 EJB 中的异常

python - Tkinter 多项操作

java - 如何在 Java 上实现我自己的 UI 元素?

java - 画一只蜘蛛

regex - 如何在 MATLAB 中验证 formatSpec 字符串?