- PR -

Swingアプリを最前面に表示

投稿者投稿内容
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2003-07-29 18:02
引用:
selfishさんの書き込み (2003-07-29 17:04) より:

実行環境がWindowsなら最前面表示は可能だったと思います。

実行環境がWindowsなら、別のスレッドで紹介されている方法で HWND を取得して JNI 経由で SetWindowPos やら BringWindowToTop やらを使えば出来ますね。もっとも、実行環境が Windows に特定できるのであれば特に Java を使う必要は無いと思いますが。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-08-02 23:53
なかなか思い出せなくて、遅くなりましたが、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/GraphicsDevice.html
にあるフルスクリーン排他モードは使用できないでしょうか?
(フルスクリーンに限定されるのでしょうが。)
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2003-08-05 09:11
>ユーザー主導の観点から、このようなUIはユーザーに不安や刺激を与えるため
>好ましくないというのが私の考えです。

かずくんのイメージしているものは、たとえばWebページを見ていて
いきなり広告がポップアップウィンドウでいくつも開いてしまうような
ものではないでしょうか? 確かに、こういうのは広告にならずに
逆にマイナスイメージしか残さないよな〜と思います。

緊急の通知ダイアログであれば、やはり最前面に出てくる必要があると思います。
例えば、Windowsがリモートからシャットダウンされるとかいう場合、
何の通知もなしにいきなり電源が落ちるよりは、「このマシンはあと1分で
シャットダウンされます。作業を終了してログアウトしてください。」
みたいな通知が出るほうが好ましいでしょう。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-08-05 12:44
適切なフォローありがとうございます。

引用:

かずくんのイメージしているものは、たとえばWebページを見ていて
いきなり広告がポップアップウィンドウでいくつも開いてしまうような
ものではないでしょうか? 確かに、こういうのは広告にならずに
逆にマイナスイメージしか残さないよな〜と思います。

緊急の通知ダイアログであれば、やはり最前面に出てくる必要があると思います。
例えば、Windowsがリモートからシャットダウンされるとかいう場合、
何の通知もなしにいきなり電源が落ちるよりは、「このマシンはあと1分で
シャットダウンされます。作業を終了してログアウトしてください。」
みたいな通知が出るほうが好ましいでしょう。



あらゆる場面において、最前面に出すUIはマズイというのはあまりに過激で言い過ぎでした。ごめんなさい。

しかし、一介のアプリケーションがこのような、インターフェースを用意する必要があるのでしょうか?

このような処理は、カーネルのシステムコールやOSのAPI呼んで解決するべきことじゃないでしょうか。もちろん用意されていればの話ですが...。

逆に、上で引用したような処理、signalを常に監視していて、terminate signalが発生したら、各ユーザーに通知を行うような、緊急性を要するプログラムを書くときや、APIの実装を行うときには、用意すべきでしょう。

このような処理は、OSのAPIの実装者に任せておけば良いのではないでしょうか(もちろん自身がOSのAPIの実装者だったら、話は別)。しかし、Windowsのような、一企業が抱え込んでいるOSの場合、システムレベルの処理を実装してくれる保証はなく、場合によっては、自分で実装しなければならないときもあるでしょうね。
ToGo
常連さん
会議室デビュー日: 2002/03/16
投稿数: 46
投稿日時: 2003-08-05 22:30
アプリケーションのエラーダイアログがモーダルで最前面に現れる、という
ようなエラー通知の仕様は、ユーザとしては嬉しくないことがあります。
例)メーラがサーバとの接続に失敗した場合に、モーダルなダイアログを
 出す仕様であったとします。何らかの事情でオフラインで作業している
 とき、メーラがサーバへ接続に行く毎(数分)にエラーダイアログが
 最前面に現れます。別なアプリケーションで文書作成をしていると、
 数分ごとに邪魔されることになります。(とってもうっとおしい)

アプリケーション開発者にとっては、そのエラーはアプリケーション自身の
最重要機能が果たせなくなる致命的な問題かもしれません。しかしながら、
ユーザにとってはそのエラーは取るに足らないもの、かもしれません。

特定システム専用端末であれば、ユーザ観点でエラーの優先度をシステム
設計者がある程度予測して決めることができます。しかし、Windows等の
汎用OSで、一介のアプリケーションを開発する場合であれば、ユーザ観点
のエラーの優先度を予測することは難しいでしょう。
そのときは、ポップアップするかしないかをユーザ設定可能項目にしておく
といった工夫が必要になります。先のメーラなら、サーバとの接続エラーが
起きたらデフォルトではモーダルなダイアログでエラーを通知するけれど、
うざかったらダイアログを出さない設定をOnにしてね、という感じでしょう。

# エラーを最前面に出すのがあたりまえという主張が多かったので・・・
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-08-06 00:16
引用:

ToGoさんの書き込み (2003-08-05 22:30) より:
# エラーを最前面に出すのがあたりまえという主張が多かったので・・・



最前面に出すのが当たり前とは思っていません。
そういう方法も状況によってはありかどうかが皆さんの論点だったと思います。

#私個人としては、その程度のことが実現できないの??
と思ってこのスレッドを立てました。
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2003-08-07 12:19
引用:
Shinさんの書き込み (2003-08-06 00:16) より:

#私個人としては、その程度のことが実現できないの??

Java House ML Topics から探してみたら以下のような記事が見つかりました。
引用:
http://java-house.jp/ml/archive/j-h-b/021221.html#body

JDK1.2 で(当初は)Java で書かれた Input Method がフレームワークの中で公開される予定だったので、Javaでかな漢字の User Interface を書くには、、、
  • 常に最前列にいるウィンドウ
  • フォーカスを持たないウィンドウ
が必要だと主張したのですが、こういったサービスはWin32 固有なのか、cross platform でサポートするのが難しいのか、認めてもらえませんでした。



たしかに、Windows ではシステムでサポートされているので「その程度」と言えるのでしょうが… 少なくとも提案はされているようですから、採用されなかった事に関してはそれなりの理由があるのだと思います。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-08-07 12:37
(またもよこみちです。。Shinさんごめんなさい><)
ども、ほむらです。
ただの思想的な問題なのかもしれませんが。。。。

僕も致命的エラーなら最前面に出して
ユーザーに知らせるべきだと思っています。

僕の思う致命的エラーとは −−
  初期化などの初期設定に失敗。
  処理の継続を左右する回復不可能なエラーの発生。
といったところでしょうか。。。
--------------
ToGo氏へ
引用:
アプリケーション開発者にとっては、そのエラーはアプリケーション自身の
最重要機能が果たせなくなる致命的な問題かもしれません。しかしながら、
ユーザにとってはそのエラーは取るに足らないもの、かもしれません。


ユーザーにとって取るに足らないものであっても
アプリとして処理の正常な機能に支障をきたすような致命的エラーが
発生した時点でユーザーに知らせるべきだと思います。

そして、それを見たユーザーもなんらかの対応をとるべきとも思いますし。。。
(気が付くことのない告知や無視されてしまう警告に何の意味がありましょう)

まぁ、それでも警告や新着メールが届きました程度のことが最前面に現れるのも
うっとうしいのは確かですよね。。
特に、例にあげたサーバーにつながらないといった状態は普通ならば
致命的エラーですけどメーラーの場合なら警告程度でもいい気もしますし。。。

# 結局はアプリ作る側の判断次第なんですよね。。。
# このあたりの定石とかあればいいのですけど。

スキルアップ/キャリアアップ(JOB@IT)