2017-11-21 14 views
5

私は、コンソールウィンドウで基本的な矢印キーの動きを実装する方法を見つけるのに苦労しています。 switch文と変数を使用するC#スクリプトが出てきましたが、先生はJavaの使用を主張しています。Javaでコンソールウィンドウで基本的な矢印キーの動きを実装する方法は?

いくつかの他のスレッドから、JNAやJlineのような特定のフレームワークをインストールしない限り、Javaでは不可能だと思われる回答がありましたが、初心者としては何もわかりませんそれらのことも意味します。

は今、あなたは私の先生は、我々はそれを行うことができ思考のための馬鹿であると言う前に、彼はそれをするには、矢印キーの動きを持っていたと述べたことがない、私はちょうどクール:)

+2

これは私がしばらく疑問に思っていたものですが、研究に気を配りませんでしたので、私はこれをアップしました。私は他人がこれをダウンホートする理由を知ることができますが(試行はありません)、面白くプログラミングに関連しており、OPがいくつかの研究を行っていることを示しています。 – byxor

+0

awtでKeyEventを使用し、c#で使用されているのと同じメカニズムを使用します。検出されたKeyEventでスイッチをオンにします。あなたがもっと説明が必要な場合は私に教えてください、私は答えを追加します –

答えて

3

これはより困難になるだろうと思いましたこれは主にJavaがプラットフォーム間で動作するためです。

InputStream in = System.in; 

    int next = 0; 
    do { 
     next = in.read(); 
     System.out.println("Got " + next); 
    } while (next != -1); 

は今、二つの問題がある:それはあるとして、UNIXプラットフォームで

  1. が、これは次の文字を印刷しないので、同様にキーボードから読み込むための基本的なソリューションは、標準入力を使用することですキーが押された後にのみ、オペレーティングシステムが入力をデフォルトでバッファリングするため、
  2. 矢印キーのASCIIコードはありません。代わりに、使用されているターミナルエミュレータに依存するエスケープシーケンスがあります。上記のコードを実行してArrow-Upキーを押し、Returnキーを押すと、次の出力は:あなたが唯一のUNIXプラットフォームを標的にしている場合

    Got 27 // escape 
    Got 91 
    Got 65 
    Got 10 // newline 
    

この周りに良いプラットフォームに依存しない方法はありませんが、javacursesは役立つかもしれません。

関連する問題