2016-06-19 8 views
0

javafxを使ってイメージをブラウズしたり編集したりするImageViewerを作成しました。このappnは閲覧する画像ファイルを選択するためのオープンメニューを提供します。 .jarファイルを.exeファイルに変換しました。 1つの画像ファイルのプロパティで、このImageViewerを使用してデフォルトで画像が開くように、「open with」オプションを変更しました。しかし、私が画像をダブルクリックすると、appn ImageViewerが起動し、そのようなものをコード化しないtheresとして何もしません。画像を表示する唯一の方法は、「開いているメニュー」を使用することです。しかし、イメージをクリックすると、appn ImageViewerが起動してイメージを表示する機能が必要です。これを行う方法はありますか?アプリケーションが起動時に起動した理由をアプリケーションがどのように検出したか

+0

[mcve]についてはどうですか? – c0der

+0

@ c0der例:テキストファイルをダブルクリックするとメモ帳で開きます。メモ帳が開き、ファイルの内容が表示されます。私の質問は、どのようにファイルを検出するノートパッドですか?そして、もし私がjavaを使って同じことをしなければならないなら、そこには何らかの方法がありますか? –

答えて

0

あなたの質問に答えるには:はい、他のアプリケーションが実行できることを知っているので、これを行う方法があります - それは何かを特定するだけです。

私はこれまで同様のことをしていますので、答えを見つけ出す方法について私の考えを歩いてもらうことができます。

問題を考えてみましょう。オペレーティングシステムがアプリケーションと通信しようとすると、アプリケーションにどのファイルを開くかを伝えます。論理的には、システムはそのファイルへのパスをアプリケーションに送信しなければならないと結論づけなければならない。

ここで、コミュニケーションはどのように行われますか?既定のプログラムの設定について考えてみましょう。そこには何らかの制限がありますか、どのような種類のファイルを開くようにプログラムに依頼できますか?少し実験してみると、制限がないことがわかります。どのプログラムにもファイルを開くように頼むことができます(正しく動作するとは言えませんが、実行できます)。それで私たちは何を教えてくれるのですか?つまり、どのプログラムがファイルを開くための「正しい」プログラムであるか分からず、システムに「こんにちは、この種のファイルを開くことができます」という登録メカニズムはないということです。

したがって、どのプログラムでもファイルを開くことができ、システムがファイルを開くことができるプログラムのレジストリを保持していない場合、開くべきファイルパスを伝えるプログラムにどのように話すと思いますか?まあ、最も単純な最も一般的な方法は、コマンドライン引数であるように見えます。このようにして、すべてのシステムはアプリケーションを呼び出し、ファイルパスを含む引数を渡します。

メインメソッドを定義するとき:public static void main(String[] args){...} "args"パラメータは、コマンドライン引数がプログラムに渡される場所です。いくつかのログステートメントやSystem.outステートメントを書いてargsの内容をダンプすると、ファイルパスがこのように渡されていることがわかります。

argsでファイルパスを取得できることを確認したら、システムが渡した引数を使用してファイルの内容を検索して読み取るようなファイル読み取りロジックを作成するだけです。

+0

ありがとう、それは助けてくれました。今私は必要なコーディングとその正常な作業を行っています。 –

関連する問題