我可以用 picocli 做可滚动的结果吗?
Can i do scrollable results with picocli?
我想知道我是否可以使用 picocli 应用程序实现可滚动的结果。
示例:
GetTracks
输出结果列表
>TrackA
TrackB
TrackC
并且用户可以向上或向下滚动和 select 他想要的曲目?
我想知道 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();
}
}
以上示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。您将需要做更多的逻辑和工作流控制(以纠正一些非常明显的错误),但如果您决定沿着这条路走下去,这应该可以帮助您入门。
我想知道我是否可以使用 picocli 应用程序实现可滚动的结果。 示例:
GetTracks
输出结果列表
>TrackA
TrackB
TrackC
并且用户可以向上或向下滚动和 select 他想要的曲目? 我想知道 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();
}
}
以上示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。您将需要做更多的逻辑和工作流控制(以纠正一些非常明显的错误),但如果您决定沿着这条路走下去,这应该可以帮助您入门。