2009-08-24 12 views
21

ncursesのような機能(メニューのナビゲートや画面全体の再描画など)を備えたコンソールアプリケーション(Javaの場合もある)を実装する必要があります。Javaでテキストユーザーインターフェイス(ncursesのような)機能を使用する最も良い方法は何ですか?

私はこれを行うに見つけることができる唯一のソリューションは、これまでCHARVA("A Java Windowing Toolkit for Text Terminals")、tuipeer("A Text User Interface for the Java AWT")と本当に古い博士ドッブの記事("A Text UI for the Java AWT ")です。

これまでのところ、CHARVAは私が見つけることができる最高のものですが、私はJNIを使​​ってcursesをラップするというアイデアが気に入らないのです。

これを行うには、AWT/Swingと言う標準的な方法がありますか?その他の選択肢は何ですか?

+0

私は数年前にこのに見て、あなたが持っているよりも、それ以上を見つけることができませんでした。私は問題は、低レベルのターミナル機能がプラットフォーム固有であることです。OSレベルだけでなく、ターミナルエミュレータレベル(VT100、xtermなど)でも問題ありません。私はcurses(またはtermcap/terminfoなど)のようなネイティブAPIをラップすることなく、それを扱う方法についてもわかっていません。生制御文字を 'System.out'と話すことができると思います。 –

+0

生の制御文字をstdoutに話すことは、cursesがそれを行う方法とまったく同じです。したがって、相当な作業ですが、それは賢明な考えです。 – skaffman

+2

JNIの何が問題なのですか?私はCHARVAに行くだろう、それは完全に見える(ish)。 –

答えて

0

私はそれはいくつかの癖を持って思い出すが、あなたがやりたいことができるはず、Jcursesは呪いのAPIのネイティブJava実装であると考えている:

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

+0

もJNIを使​​用しているようです – skaffman

+0

これは7年後に更新されていませんが... おそらくJNIを使​​用しているネイティブコードを使用しているようです。 –

0

は(申し訳ありませんjava cursesをお試しくださいJNIを使​​用します)。私はまた、JNIを学ぶためにこのライブラリの短いバージョンを実装しようとしました。http://plindenbaum.blogspot.com/2008/01/java-native-interface-jni-notebook.htmlを参照してください。

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

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

} 
1

短い答えは、cursesの周りのJavaラッパーを扱っています。文字列を表示する特殊なJPanelを想像することもできます。

長い答え:

端子は(それらのプロジェクトのメンテナがところで聖人ある)のterminfo/termcapのライブラリが存在し、なぜ彼らはに対処するために混乱している理由で多くのことを、異なります。彼らは、すべての本当に基本的な端末のバリエーションを無神論的なものに抽象化します。 Cursesは、効率的なライブラリを使いやすくします。

純粋なJavaソリューションが必要な場合は、それらのライブラリまたは同等のJavaが必要です。私は誰かがそれが存在すればあなたを指摘するだろうと確信していますが、私が知っている限りそれは存在しません。

0

私はいくつかのコンソールJavaプロジェクトでJavaTUI(http://sourceforge.net/projects/javatui/files/)を使用しています。それは私が見つけることができますが、これまでのところ完璧からは最高です。私は、Javaの世界では良いTUIの実装がないと思います。

1

私はTUIからJavaコードを抽象化し、アプリケーションのいくつかの別々の部分に対して、またはWebサービススタイルで引数を使用してncursesを使用する方がよいと思います。たとえば、コードあなたのTUIと、ユーザーがアクションを呼び出して、いくつかのパラメータ

java -Daction=doSomething MyApp 

にあなたがあなたがする必要がある場合にも、GUIを使用してアプリケーションをコーディングすることができるこの方法を渡すあなたのコードを呼び出すためのncursesを使用しています。

9

あなたはここに、この問題のための投票を行ってみたいことがあります。http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6351276

は、基本的にこの問題が対処されるまで、JNIずにncursesベースのような機能を得るための良い方法はありません。ランテルナがある2010年から

関連する問題