如何解决将管道与Lanterna默认终端工厂配合使用会打开一个摆动窗口
我正在尝试制作一个使用管道的Lanterna应用程序。这是我的代码的样子:
DefaultTerminalFactory defaultTerminalFactory = new DefaultTerminalFactory();
Terminal terminal = defaultTerminalFactory.createTerminal();
Screen screen = new TerminalScreen(terminal);
screen.startScreen();
screen.setCursorPosition(new TerminalPosition(2,0));
screen.setCharacter(0,new TextCharacter('>',ANSI.GREEN,ANSI.DEFAULT,SGR.BOLD));
screen.refresh();
StringBuilder res = new StringBuilder();
while (true) {
KeyStroke keyStroke = screen.readInput();
if (keyStroke.getKeyType() == KeyType.Escape) {
screen.close();
break;
}
if (keyStroke.getKeyType() == KeyType.Enter) {
break;
}
if (keyStroke.getKeyType() == KeyType.Backspace) {
if (res.length() > 0) {
screen.setCharacter(res.length() + 1,new TextCharacter(' ',ANSI.DEFAULT));
res.deleteCharAt(res.length() - 1);
screen.setCursorPosition(screen.getCursorPosition().withRelativeColumn(-1));
screen.refresh();
}
} else {
Character character = keyStroke.getCharacter();
if (character != null) {
res.append(character);
screen.setCharacter(res.length() + 1,new TextCharacter(character,ANSI.BLUE,SGR.BOLD,SGR.UNDERLINE));
screen.setCursorPosition(screen.getCursorPosition().withRelativeColumn(1));
screen.refresh();
}
}
}
// Do some other stuff that doesn't deal with the screen
screen.close();
应用程序在使用管道运行时应该从stdin读取输入。但是,当我输入输入以运行程序(ls | java -jar ...
)时,Lanterna将打开一个旋转窗口。当我将DeafultTerminalFactory
更改为常规UnixTerminal
时,灯笼从管道开始就崩溃了。使用管道时,如何在终端中制作Lanterna制作此应用?谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。