私たちの顧客は、MS Officeのような他のソフトウェアの他に、私たちのソフトウェア(Webstartを使用して起動したJava Swingアプリケーション)を使用して仕事をしています。時には、私たちのソフトウェアで多大な時間をかけずに処理しなければならない重要な出来事があります。顧客はそれから顕著な通知を得たいと思う。今すぐ彼はExcelを使用している可能性があるので、メッセージボックスをポップアップするだけでは十分ではありません(タスクバーのエントリは点滅します)。デスクトップアプリケーションの重要なイベントをユーザーに通知するにはどうすればよいですか?
Outlookノーティファイアのようなメカニズムが必要です。つまり、常に表示されるがフォーカスを奪うことのできないポップアップです。通知者は、メッセージの理由がなくなる(ユーザーが問題を解決した)か、ユーザーがメッセージを閉じた(Outlookのように)まで、常に表示されます。さらに、トレイアイコンを表示し、サウンドを再生したいと考えています。
Java6のjava.awt.SystemTrayとJDIC(バージョン0.9は既にそのプロジェクトのクラスパスにlibがあるので)を試しましたが、タイムアウトを設定する方法が見つかりませんでした。 TrayIcon.displayMessageメソッドを呼び出すと、メッセージが常に上に表示されないようです。
要求された動作を実現するためにJNI以外のオプションはありますか?
JNIが唯一の選択肢であり、Windowsがお客様の唯一のプラットフォームである場合、Outlook通知機能はOutlook専用機能ですか、Windows APIを通じて自由に使用できますか?
他のソフトウェアで現在のタスクを完了するのを妨げることなく、あるソフトウェアで実行する重要なタスクについてユーザーに通知するための他のオプションがあります。システムモーダルダイアログはオプションではありません!
ニースのヒント。設定されていないJDialogをsetAlwaysOnTopで使用すると、フォーカスが奪われず、常にシステム全体で常に上になります。 java.awt.SystemTrayと組み合わせると、これが必要なのかもしれません。 –
私はこれが私たちのために行く方法だと思っています.Snarlはインストールのオーバーヘッドのためにいいですが実際にはオプションではないからです。 java.awt.GraphicsEnvironmentを使用して、私は左下にウィンドウを配置しようとします(ユーザがデフォルト位置にタスクバーを持っていると仮定して)。 –