2011-02-10 8 views
2

Javaのプロセスの入力、エラー、および出力ストリームへのアクセスを提供するクロスプラットフォームソリューションを作成したいと考えています。Javaのコマンドラインインターフェイス

基本的に、私が作成したいのは、プロセスの出力とエラーストリームを表示し、入力ストリームにデータを提供できるテキスト領域です。言い換えれば、あなたがアプリケーションを実行したときにEclipseがConsoleで既に提供しているもの。

今、この基本的な実装は簡単で、すべてのキー入力を入力ストリームに送信するだけです。しかしもちろん、私はペースト、バックスペース、矢印キーの操作に問題がありました。ctrl-Cなどを処理しました。

プロセスの入力ストリームにデータを送信する前に待つ必要があるようです。しかし、何を待つ?入力したすべてのテキストをそれぞれのリターンキーで送信する必要がありますか?または間隔の後に? については、ctrl-Cctrl-Xなどとなります。矢印キーの動きを入力ストリームに送りますか?

+0

貼り付けやバックスペースなどでどんな問題がありましたか?私はキーイベントをリダイレクトしているコンポーネントもすべてのイベントを処理する必要があると思います。だからあなたが望むように起こっていないことがあるなら、あなたが正しいコンポーネントを使用しているかどうかを調べるでしょう。 –

+0

誰かが何かをペーストすると、コンポーネントはCtrl + Vイベントを受け取りますが、それ以上のものがテキストエリアに追加されます。これも、私は検出することができますが、私はいつそれを入力ストリームに送りますか?直ちに?しかし、誰かが何かをペーストして、何度かバックスペースを押してから戻るとどうなるでしょうか? –

+0

バッファリングされたストリームを使用していますか?私はバッファリングされたストリームを使用し、各戻りキーですぐに送信します。バッファリングされた状態でバックスペースと矢印キーを処理しなければなりません。すべて – hauntsaninja

答えて

0

あなたは何かを待つべきではなく、あなたのGUIイベントスレッドではなく、別のスレッドで送信します。後者はブロックしません。

特殊文字を扱う場合は、これらの記号がテキストコンソールに入力されたときに得られるものを見てください。

1

最も簡単で使いやすいソリューションは、テキストエリアの内容全体を送信してクリアする「送信」ボタンを使用することです。インスタントメッセンジャーのアプリやSOのコメントエディタを考えてみてください。

+0

彼の質問はコマンドラインアプリケーションに関するものだと思うので、ボタンやエリアは私が推測するのに役立ちません。 – Simeon

+1

@シメオン「基本的に、私が作成したいのは、プロセスの出力を表示するテキストエリアです。これがGUIアプリケーションだと思っていましたが、そうでなければ十分です。 – biziclop

+0

(コメントを読んでから)私は間違っていると思うし、実際にはGUIを持っている...私はより慎重に質問を読む必要があります。謝罪:) – Simeon

関連する問題