- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是一个相对较新的 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 Lanterna 库终端读取用户输入时遇到问题。当按键时,我希望系统在终端上打印某个字符。我使用这段代码: 公共(public)类蛇{ public static void main
我是一个相对较新的 Java 程序员(大约两个月的经验),我不知道如何将数据输入到 Lanterna 中。 (用于创建终端用户界面的库)将文本框转换为字符串以备后用。 这是我的代码: //Variab
我在 Windows 上使用 NetBeans IDE 和 lanterna 。我尝试创建一个 SwingTerminal,但它不会显示。 public static void main(St
我正在使用 Maven 学习一个简单的灯笼演示教程。问题是该程序使用 IDE intellij 可以完美运行,但无法从终端编译。我需要在 pom.xml 文件中包含更多内容吗? 我的文件 Rouge.
我正在使用 googlecode Lanterna 库。它的方法之一是“moveCursor(int x, int y)”。我有一个终端字段,我想在其中移动一个字符。但我有两个问题: 光标未按应有的方
我目前正在编写一个小型终端应用程序,使用我发现的一个非常酷的 Java 库:Lanterna .它允许我使用与 Swing 类似的概念编写类似 ncurses 的应用程序。 由于该应用程序的最终目标是
我是一名对编程知之甚少的程序员,但我想导入名为 com.googlecode.lanterna.terminal 的 Lanterna(一个 gui 控制台库)包但当我这样做时 import com.
如何获得键盘输入(例如 Enter 或 F1)?我需要在按下回车键后获取文本框内容。我需要随时获取 F1 和其他键。 public static void main(String[] args) th
我是一名优秀的程序员,十分优秀!