跳到主要内容

终端用户界面

QWen Max 中英对照 TerminalUI

TerminalUI 是驱动用户界面执行逻辑的主要实现。

创建 TerminalUI

您可以手动构建 TerminalUI,但推荐的方式是使用 TerminalUIBuilder 构建,它会为您自动配置并设置所需的服务。

@Autowired
TerminalUIBuilder builder;

void sample() {
TerminalUI ui = builder.build();
// do something with ui
}
java

配置视图

TerminalUI 有一个辅助方法 configure(View),可以用来将所需的集成设置到 eventloop 和其他服务中。

TerminalUI ui;

void sample() {
BoxView view = new BoxView();
ui.configure(view);
}
java

运行 UI 循环

运行 TerminalUI 执行循环是一个阻塞操作。你需要一种方法来退出循环,例如 退出应用

TerminalUI ui;

void sample() {
ui.run();
}
java

退出应用

如果你想使用普通的 CTRL-Q 键盘组合退出应用程序,请监听事件并请求 interrupt

@Autowired
Terminal terminal;

void sample() {
TerminalUI ui = new TerminalUI(terminal);
BoxView view = new BoxView();
ui.configure(view);
ui.setRoot(view, true);
EventLoop eventLoop = ui.getEventLoop();
eventLoop.keyEvents()
.subscribe(event -> {
if (event.getPlainKey() == Key.q && event.hasCtrl()) {
eventLoop.dispatch(ShellMessageBuilder.ofInterrupt());
}
});
ui.run();
}
java

模态视图

TerminalUI 支持有一个活动的模态视图。模态视图置于所有其他视图之上,并接收所有的输入事件。

TerminalUI ui;

void sample() {
DialogView dialog = new DialogView();
// set modal
ui.setModal(dialog);
// clear modal
ui.setModal(null);
}
java
备注

视图不应该直接了解 TerminalUi,而接口 ViewService 则提供了与模态相关的函数。