- PR -

Swingアプリを最前面に表示

投稿者投稿内容
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-07-25 14:30
Swingアプリを(JFrame/JDialog)を、
他のWindowsアプリに隠れないように
画面の最前面に表示させる方法はありますか?
toFront() を使ってみましたがダメでした。

また、画面の右上端のポジションを取得して、
アプリが右上に起動するようにする事は可能でしょうか?

環境はWindows2000/JDK1.4です。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-07-27 02:29
こんばんわ

画面の最前面に表示するという意味がわかりません。
どの時点で、最前面に持っていきたいのでしょうか。
起動時であれば、常に最前面に来ますよ。

そうではなく、他のウインドウを重ねても、
そのウインドウより前面に表示させたいのであれば、
無理なんじゃないのでしょうか。
単に私が知らないだけかもしれません。

引用:

また、画面の右上端のポジションを取得して、
アプリが右上に起動するようにする事は可能でしょうか?



インスタンスを起こしてから、表示するまでに間にsetLocation()メソッドで、
移動させれば、好きな位置に移動することが出来ます。

public class Test {
public static void main(String[] inArgs) {
javax.swing.JFrame f = new javax.swing.JFrame();

f.setLocation(100, 100);

f.show();
}
}

それとも聞きたいのは、デスクトップ画面の領域を取得する方法?
取得方法は、APIリファレンスのjava.awt.Toolkitのところを探せば
見つかるでしょう。
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-07-28 11:05
[quote]
画面の最前面に表示するという意味がわかりません。
どの時点で、最前面に持っていきたいのでしょうか。
起動時であれば、常に最前面に来ますよ。
[quote]

当然ですが起動時ではありません。
具体的には2つのうちどちらかができればいいなと思っています。
1.常に最前面に表示されている
(他のウィンドウ(Java以外含む)がアクティブになっても常に最前面)
2.一定時間立つと自分自身を更新する仕組みになっているので、
その際に自分を最前列に表示するようにする。
(ここで toFront() を使ってみたのですがダメでした)

引用:

それとも聞きたいのは、デスクトップ画面の領域を取得する方法?
取得方法は、APIリファレンスのjava.awt.Toolkitのところを探せば
見つかるでしょう。



見つかりました。ありがとうございます。
GUIにはちょっと疎いもので、超基本的な事ですいませんでした。
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2003-07-28 11:52
こんにちわ。お世話になっております。

引用:

1.常に最前面に表示されている
(他のウィンドウ(Java以外含む)がアクティブになっても常に最前面)



フローティング・ウィンドウのことをおっしゃっていると思いますが、
わたしも以前同じようなことを試みました。
しかし、どうやら実現は難しいようなのであきらめました

以下ご参考までに。

 http://java-house.jp/ml/archive/j-h-b/007656.html
 http://java-house.jp/ml/archive/j-h-b/021220.html

[ メッセージ編集済み 編集者: ゆう 編集日時 2003-07-28 14:34 ]
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-07-28 15:41
引用:

ゆうさんの書き込み (2003-07-28 11:52) より:
こんにちわ。お世話になっております。

引用:

1.常に最前面に表示されている
(他のウィンドウ(Java以外含む)がアクティブになっても常に最前面)



フローティング・ウィンドウのことをおっしゃっていると思いますが、
わたしも以前同じようなことを試みました。
しかし、どうやら実現は難しいようなのであきらめました



2.の方法はどうでしょうか。
toFront() では Java 以外のウィンドウの前に表示する事はできないようですが、
他には手段はないのでしょうか?

APIを見る限りなさそうなので、
あったとしても Pure Java ではなくなってしまいそうですが。。。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-07-28 16:03
unibon です。こんにちわ。

引用:

Shinさんの書き込み (2003-07-28 11:05) より:
1.常に最前面に表示されている
(他のウィンドウ(Java以外含む)がアクティブになっても常に最前面)


チャチャですが、そのようなアプリケーションが同時に2つ動いていて、
それら2つのウィンドウが重なり合っていた場合はどうなるべきか、
気になって夜も眠れません。
ちなみに、Windows の「タスクマネージャ」で「常に手前に表示」を
オンにしたような感じで、システム全体の中で最前面になることを
要求されているのですよね。
#でも、タスクマネージャが2個重なっても、
#最前面の取り合いにはならなかった記憶があります(笑)。
#タスクマネージャを2個出すのがそもそも難しいですが。

ちなみに、ひとつのアプリケーションインスタンスの中だけで最前面にするのは、
たしか Java でできるはずです。
どうやるのかはちょっと思い出せませんが、
たとえば(Swing を使って作られている) JBuilder のデバッガのウィンドウなどは
そういう動きです。
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-07-28 17:00
引用:

unibonさんの書き込み (2003-07-28 16:03) より:

ちなみに、ひとつのアプリケーションインスタンスの中だけで最前面にするのは、
たしか Java でできるはずです。
どうやるのかはちょっと思い出せませんが、
たとえば(Swing を使って作られている) JBuilder のデバッガのウィンドウなどは
そういう動きです。



それを実現するのが Window クラスの toFront() だと思うのですが、
やはり他のアプリのウィンドウの前には出せないのだろうか
というのが私の疑問です。

「常に最前面」の方はあきらめました。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-07-28 17:12
こんにちわ

引用:

ちなみに、ひとつのアプリケーションインスタンスの中だけで最前面にするのは、
たしか Java でできるはずです。
どうやるのかはちょっと思い出せませんが、
たとえば(Swing を使って作られている) JBuilder のデバッガのウィンドウなどは
そういう動きです。



おそらく、常にfrontに置く(ように見せる)UIを用意しているのでしょう。
デバッガのウィンドウ自体、Internal Frameでしょうし。

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