Was ist der beste Weg, um Text User-Interfaces (ncurses-like) Funktionalität in Java zu bekommen?

StackOverflow https://stackoverflow.com/questions/1321308

  •  19-09-2019
  •  | 
  •  

Frage

Ich brauche eine Konsolenanwendung (möglicherweise in Java) mit ncurses-ähnlicher Funktionalität zu implementieren (wie ein Menü zu navigieren und die Wiederherstellung des gesamten Bildschirms).

Die einzigen Lösungen, die ich finden kann, dies zu tun, so weit sind CHARVA (“ Ein Java-Windowing Toolkit für Text Terminals "), tuipeer (" Ein Text User Interface für die Java AWT ") und ein wirklich alter Artikel von Dr. Dobb ( "ein Text UI für die Java AWT „).

Bisher CHARVA ist das Beste, was ich finden kann, aber ich weiß nicht, wie die Idee davon JNI Flüche zu wickeln.

Gibt es eine Standardmethode, sagt mit AWT / Swing, dies zu tun? Was andere Alternativen gibt es?

War es hilfreich?

Lösung

Seit 2010 gibt es Lanterna:

  

Lanterna ist eine Java-Bibliothek ermöglicht Ihnen einen einfachen semi-grafischen Benutzeroberflächen in einem Text-Umgebung, sehr ähnlich wie die C-Bibliothek Flüche zu schreiben, aber mit mehr Funktionalität. Lanterna unterstützt xterm kompatiblen Endgeräten und Terminalemulatoren wie konsole, gnome-terminal, Kitt, xterm und viele mehr. Einer der wichtigsten Vorteile von lanterna ist, dass es auf jeder native Bibliothek nicht abhängig ist, sondern läuft zu 100% in reinem Java.

Mehr hier: https://github.com/mabe02/lanterna

Andere Tipps

Sie können möchten für dieses Problem Abstimmung gehen Sie hier: http: // Bugs .sun.com / bugdatabase / view_bug.do? bug_id = 6351276

Im Wesentlichen gibt es keine gute Möglichkeit ncurses-ähnliche Funktionalität ohne JNI zu erhalten, bis dieses Problem angesprochen wird.

Ich glaube, Jcurses ist eine native Java-Implementierung der Flüche API, ich erinnere sie haben ein paar Macken, aber es sollte in der Lage sein zu tun, was Sie wollen:

http://sourceforge.net/projects/javacurses/

Versuchen Sie java Flüche (sorry es verwendet JNI). Ich habe auch versucht, nur eine kurze Version dieser Bibliothek zu implementieren JNI zu lernen, finden Sie unter http://plindenbaum.blogspot.com/2008/01/java-native-interface-jni-notebook.html . Man könnte auch eine spezialisierte JPanel vorstellen, eine Matrix von Zeichen angezeigt wird:

public class TPanel extends JPanel
{
private Vector<Vector<YourCharAndStyle>> rows;

protected void paintComponent(Graphics g)
 {
 //paint the characters
 (...)
 }

}

Die kurze Antwort ist Deal mit einem Java-Wrapper um Flüche.

Die lange Antwort:

Terminals sind sehr unterschiedlich, weshalb term / termcap Bibliotheken existieren und warum sie ein Chaos zu behandeln sind (Die Maintainer dieser Projekte Heiligen sind btw). Sie abstrahieren alle wirklich grundlegende Terminal Variationen etwas gesund. Flüche machen diejenigen, die in schönen effizienten Bibliotheken zu verwenden.

Wenn Sie eine reine Java-Lösung wollen, müssen Sie beide diese Bibliotheken oder deren Äquivalent in Java. Ich bin sicher, dass jemand Sie zu diesem Punkt, wenn es vorhanden ist, aber ich soweit ich weiß, dass es nicht existiert.

Ich bin mit JavaTUI ( http://sourceforge.net/projects/javatui/files/ ) in meinen mehr Konsole Java-Projekten. Am besten ist es, was ich finden kann, aber es so bei weitem nicht perfekt. Ich denke, es gibt keine gute TUI Implementierung in Java-Welt ist.

ich denke, es zu abstrahieren Ihr Java-Code aus dem TUI und Verwendung ncurses gegen mehr getrennten Teile der Anwendung oder Verwendung Argumente besser wäre, in einem Web-Services-Stil. Zum Beispiel Code, TUI und wenn der Benutzer eine Aktion aufruft, verwenden ncurses Code vorbei, einige Parameter nennen

java -Daction=doSomething MyApp

So können Sie Ihre App mit einem GUI auch für den Fall, codieren können müssen Sie.

Sie können Jexer versuchen - Java Text User Interface:

https://github.com/klamonte/jexer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top