Creare un menu console in Java con JLine

Mattepuffo's logo
Creare un menu console in Java con JLine

Creare un menu console in Java con JLine

JLine è una libreria per Java per la creazione di un menu console.

Ha diverse opzioni e non è difficile da usare.

In questo articolo vediamo un esempio basico.

Se usate Maven potete installarla aggiungendo questa dipendenza:

<dependency>
  <groupId>org.jline</groupId>
  <artifactId>jline</artifactId>
  <version>3.3.1</version>
</dependency>

Qui sotto un pò di codice:

package com.test;

import org.jline.reader.*;
import org.jline.reader.impl.DefaultParser;
import org.jline.reader.impl.completer.StringsCompleter;
import org.jline.reader.impl.history.DefaultHistory;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;

import java.io.IOException;

public class Main {

  public static void main(String[] args) {
    try {
      try (Terminal terminal = TerminalBuilder.builder().system(true).build()) {
        Completer completer = new StringsCompleter("help", "hello", "exit");

        LineReader reader = LineReaderBuilder.builder()
            .terminal(terminal)
            .parser(new DefaultParser())
            .completer(completer)
            .history(new DefaultHistory())
            .build();

        terminal.writer().println("Test di JLine!");
        terminal.writer().println("Scrivi 'help' per visualizzare i comandi disponibili.");
        terminal.writer().println("");

        while (true) {
          String line;
          try {
            line = reader.readLine("Scrivi comando> ");
          } catch (UserInterruptException | EndOfFileException e) {
            break;
          }

          if (line == null) {
            continue;
          }

          line = line.trim();

          switch (line) {
            case "help":
              terminal.writer().println("Comandi: help, print, exit");
              break;
            case "print":
              terminal.writer().println("Ciao da JLine!");
              break;
            case "exit":
              terminal.writer().println("Uscita...");
              return;
            default:
              terminal.writer().println("Comando inesistente: " + line);
          }

          terminal.flush();

        }

      }
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }
  }

}

Enjoy!


Condividi

Commentami!