我想知道我是否可以使用 picocli 应用程序实现可滚动的结果。例子:
GetTracks
输出结果列表
>TrackA
TrackB
TrackC
用户可以向上或向下滚动并选择他想要的曲目?我想知道这个功能是否可以通过 picocli 实现?
我想知道我是否可以使用 picocli 应用程序实现可滚动的结果。例子:
GetTracks
输出结果列表
>TrackA
TrackB
TrackC
用户可以向上或向下滚动并选择他想要的曲目?我想知道这个功能是否可以通过 picocli 实现?
不幸的是,不,picocli
只处理如何解析命令参数并将其表示给程序员。任何进一步的菜单都需要由程序员来处理。您可以使用简单的数字输入工作流程进行类似的操作。用户输入所需菜单项的编号:
>>> GetTracks
1 ) Track 1
2 ) Track 2
3 ) Track 3
select a track:
您可以通过利用类似lanterna
. 一个非常简单的实现可能如下所示:
public class OutputChar {
public static void main(String[] args) throws IOException {
Terminal terminal = new DefaultTerminalFactory().createTerminal();
Screen screen = new TerminalScreen(terminal);
TextGraphics graphics = screen.newTextGraphics();
screen.startScreen();
screen.clear();
graphics.putString(0, 0, "Track 1");
graphics.putString(0, 1, "Track 2");
graphics.putString(0, 2, "Track 3");
screen.refresh();
int selectedTrack = 0;
KeyStroke stroke = screen.readInput();
if (stroke instanceof MouseAction) {
MouseAction action = (MouseAction) stroke;
MouseActionType actionType = action.getActionType();
switch (actionType) {
case MouseActionType.SCROLL_UP: selectedTrack++;
break;
case MouseActionType.SCROLL_DOWN: selectedTrack--;
break;
}
}
screen.stopScreen();
}
}
上面的示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。你会想要做更多的逻辑和工作流控制(以纠正一些非常明显的错误),但这应该让你开始,如果你决定走这条路。