Java 兰特娜3。如何获取键盘输入,如enter或F1?
如何获取键盘输入,如enter或F1?我需要在按下enter键后获取文本框内容。无论何时,我都需要获得F1和其他关键点Java 兰特娜3。如何获取键盘输入,如enter或F1?,java,lanterna,Java,Lanterna,如何获取键盘输入,如enter或F1?我需要在按下enter键后获取文本框内容。无论何时,我都需要获得F1和其他关键点 public static void main(String[] args) throws IOException, InterruptedException { SpringApplication.run(LanternaApplication.class, args); TelnetTerminalServer server = new TelnetTerminalSe
public static void main(String[] args) throws IOException, InterruptedException {
SpringApplication.run(LanternaApplication.class, args);
TelnetTerminalServer server = new TelnetTerminalServer(2000, Charset.forName("utf8"));
final TelnetTerminal telnetTerminal = server.acceptConnection();
KeyStroke keyPressed = telnetTerminal.readInput();
System.out.println("keyPressed: " + keyPressed.getKeyType());
// Setup screen layers
Screen screen = new TerminalScreen(telnetTerminal);
screen.startScreen();
// Create main panel to hold components
Panel mainPanel = new Panel();
mainPanel.setLayoutManager(new GridLayout(1));
//input
final TextBox tbox = new TextBox(new TerminalSize(40, 1));
tbox.withBorder(Borders.singleLine());
mainPanel.addComponent(tbox);
//label
mainPanel.addComponent(new Label("New Label"));
// Create window to hold the panel
BasicWindow window = new BasicWindow();
window.setComponent(mainPanel);
// Create gui and start gui
MultiWindowTextGUI gui = new MultiWindowTextGUI(screen, new DefaultWindowManager(), new EmptySpace(TextColor.ANSI.DEFAULT));
gui.addWindowAndWait(window) }
我尝试过使用无限循环,但在gui.addWindowAndWait(window)之后无法到达它
谢谢 您可能希望实现
WindowListener
,如下所示:
public class KeyStrokeListener implements WindowListener {
public void onInput(Window basePane, KeyStroke keyStroke, AtomicBoolean deliverEvent) {
System.out.println("Pressed: "+ keyStroke);
}
public void onUnhandledInput(Window basePane, KeyStroke keyStroke, AtomicBoolean hasBeenHandled) {
// TODO Auto-generated method stub
}
public void onResized(Window window, TerminalSize oldSize, TerminalSize newSize) {
// TODO Auto-generated method stub
}
public void onMoved(Window window, TerminalPosition oldPosition, TerminalPosition newPosition) {
// TODO Auto-generated method stub
}
}
然后将侦听器添加到窗口:
public static void main(String[] args) throws IOException {
TelnetTerminalServer server = new TelnetTerminalServer(2000, Charset.forName("utf8"));
final TelnetTerminal telnetTerminal = server.acceptConnection();
KeyStroke keyPressed = telnetTerminal.readInput();
System.out.println("keyPressed: " + keyPressed.getKeyType());
// Setup screen layers
Screen screen = new TerminalScreen(telnetTerminal);
screen.startScreen();
// Create main panel to hold components
Panel mainPanel = new Panel();
mainPanel.setLayoutManager(new GridLayout(1));
// Input
final TextBox tbox = new TextBox(new TerminalSize(40, 1));
tbox.withBorder(Borders.singleLine());
mainPanel.addComponent(tbox);
// Label
mainPanel.addComponent(new Label("New Label"));
// Create window to hold the panel
BasicWindow window = new BasicWindow();
window.setComponent(mainPanel);
KeyStrokeListener listener = new KeyStrokeListener();
window.addWindowListener(listener);
// Create GUI and start it
MultiWindowTextGUI gui = new MultiWindowTextGUI(screen, new DefaultWindowManager(), new EmptySpace(TextColor.ANSI.DEFAULT));
gui.addWindowAndWait(window);
}
您应该获得的输出:
Pressed: KeyStroke{keyType=Character, character=t, ctrlDown=false, altDown=false, shiftDown=false}
您可能希望实现
WindowListener
,如下所示:
public class KeyStrokeListener implements WindowListener {
public void onInput(Window basePane, KeyStroke keyStroke, AtomicBoolean deliverEvent) {
System.out.println("Pressed: "+ keyStroke);
}
public void onUnhandledInput(Window basePane, KeyStroke keyStroke, AtomicBoolean hasBeenHandled) {
// TODO Auto-generated method stub
}
public void onResized(Window window, TerminalSize oldSize, TerminalSize newSize) {
// TODO Auto-generated method stub
}
public void onMoved(Window window, TerminalPosition oldPosition, TerminalPosition newPosition) {
// TODO Auto-generated method stub
}
}
然后将侦听器添加到窗口:
public static void main(String[] args) throws IOException {
TelnetTerminalServer server = new TelnetTerminalServer(2000, Charset.forName("utf8"));
final TelnetTerminal telnetTerminal = server.acceptConnection();
KeyStroke keyPressed = telnetTerminal.readInput();
System.out.println("keyPressed: " + keyPressed.getKeyType());
// Setup screen layers
Screen screen = new TerminalScreen(telnetTerminal);
screen.startScreen();
// Create main panel to hold components
Panel mainPanel = new Panel();
mainPanel.setLayoutManager(new GridLayout(1));
// Input
final TextBox tbox = new TextBox(new TerminalSize(40, 1));
tbox.withBorder(Borders.singleLine());
mainPanel.addComponent(tbox);
// Label
mainPanel.addComponent(new Label("New Label"));
// Create window to hold the panel
BasicWindow window = new BasicWindow();
window.setComponent(mainPanel);
KeyStrokeListener listener = new KeyStrokeListener();
window.addWindowListener(listener);
// Create GUI and start it
MultiWindowTextGUI gui = new MultiWindowTextGUI(screen, new DefaultWindowManager(), new EmptySpace(TextColor.ANSI.DEFAULT));
gui.addWindowAndWait(window);
}
您应该获得的输出:
Pressed: KeyStroke{keyType=Character, character=t, ctrlDown=false, altDown=false, shiftDown=false}