1

我想知道我是否可以使用 picocli 应用程序实现可滚动的结果。例子:

GetTracks

输出结果列表

>TrackA 
 TrackB
 TrackC

用户可以向上或向下滚动并选择他想要的曲目?我想知道这个功能是否可以通过 picocli 实现?

4

1 回答 1

2

不幸的是,不,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();
    }

}

上面的示例将从键盘或鼠标读取单个输入,并根据滚动方向更改所选轨道。你会想要做更多的逻辑和工作流控制(以纠正一些非常明显的错误),但这应该让你开始,如果你决定走这条路。

于 2021-05-06T01:10:50.163 回答