问题描述
我想知道我是否可以使用 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,"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();
}
}
以上示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。您将需要进行更多的逻辑和工作流程控制(以纠正一些非常明显的错误),但如果您决定沿着这条路走下去,这应该可以帮助您入门。