最近、私は通常の端末の機能をグラフィカルに設計されたSwingベースのコンソールプロジェクトに実装しようとしていました。ここにいる何人かの人々がこれを可能にした方法が大好きですが、それでも私は別の大きな種類の問題に遭遇しました。InpuStreamListener
私はあまり好きではありませんが、実際に話している人もいます。私の作品のサンプルコード(正確には私のものではありませんが、私のアプリのソースコードです)は次のようになります。
// Making an executor
org.apache.commons.exec.DefaultExecutor exec = new org.apache.commons.exec.DefaultExecutor();
// Creating the streams (pretty much ignore this, I just include it as a general idea of the method)
consoleOutputStream = new ConsoleOutputStream();
consoleInputStream = new JTextFieldInputStream(gsc.mainWindow.getConsoleInput().getJTextField());
// Stream Handler with the customized streams I use for the process
org.apache.commons.exec.PumpStreamHandler streamHandler = new org.apache.commons.exec.PumpStreamHandler(consoleOutputStream, consoleOutputStream, consoleInputStream);
// Setting the handler and finally making command line and executing
exec.setStreamHandler(streamHandler);
org.apache.commons.exec.CommandLine commandline = org.apache.commons.exec.CommandLine.parse(String.valueOf(arg));
exec.execute(commandline);
さて、私は通常、このメソッドを介してjavaコマンドを介してJavaアプリケーションを実行しようとします。OutputStream
本当にうまく動作し、欠陥はまったくなく、すべてを私に与えてくれますが、Inputを使用したアプリケーションは私に多くの問題を与えます。問題はSystem.in
、Scanner
クラス、クラスなどへのハードコーディングにあると思います。そこで、(最終的に)助けが必要なものがあります。アプリケーションに渡されたConsole
ものに直接アクセスできるようにするか、誰かが私に方法を説明できるようにしたいです。InputStream
実際に書く方法のInputStreamListener
これは、外部のJavaアプリケーションを実行するときに時々使用されます(はい、cmdやターミナルではなくインターフェイスを介して実行します。ここでツールを作成しようとしています)。これが複雑すぎる場合、私の側で多くの調整が必要な場合、または一般的に非常に不可能な場合、誰かが私が合格するのを手伝ってくれるInputStream
ので、実際に私のインターフェイスに固有のアプリケーションを書くことができるクラスを書くことができますか?
事前に感謝し、この全文を読む時間を割いてくれて本当にありがとう!:)