我可以用 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();
    }

}

以上示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。您将需要做更多的逻辑和工作流控制(以纠正一些非常明显的错误),但如果您决定沿着这条路走下去,这应该可以帮助您入门。