2016-04-17 16 views
1

JavaFXを使用してアプリケーションを作成しています。システムトレー時間の上にウィンドウを配置する方法(座標の推定は別として)があるかどうかを知りたい。今、私のコードはちょうど座標を推定し、ウィンドウの位置を調整します。システムトレイ上の位置ウィンドウ

コードサンプル:

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); 
stage.setX(primaryScreenBounds.getMinX() + primaryScreenBounds.getWidth() - 400); 
stage.setY(primaryScreenBounds.getMinY() + primaryScreenBounds.getHeight() - 300); 
stage.setAlwaysOnTop(true); 

私は、システムトレイに時計の上に、画面の右下にウィンドウを表示します。 画像:私はこれが最適な答えだとは思わない

screen on top of task bar

+0

が画面幅/高さの比ではなく、各々から差し引くための明示的なピクセル値に基づいてそれを行うには良いかもしれません。 – ManoDestra

+0

@ManoDestraまさに私がしたいことです。私はちょうどそれの上に私のウィンドウを配置することができるように、システムトレイの座標の参照を取得する方法があるかどうかは不思議に思っていた。私は私の答え[下記](http://stackoverflow.com/a/36673717/1160296)を掲載しましたが、これまでのところ、いくつかの顕著な違いがあるようです。 – nmenego

+0

あなたはあなたの答えで固定値を差し引いています。全体の画面幅/高さの比率に基づいて、ステージのpositionX、positionY、width、およびheightを設定する必要があります。私はあなたがこれのために引っ掛けることができるプロパティがあるとは思わない、私は恐れているが、私は間違っている可能性があります。合理的な比率を見積もるには、それは十分に簡単でなければなりません。 – ManoDestra

答えて

2

、より良い方法があるかもしれません。

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); 
stage.setX(primaryScreenBounds.getMinX() + primaryScreenBounds.getMaxX() - stage.getWidth()); 
stage.setY(primaryScreenBounds.getMinY() + primaryScreenBounds.getMaxY() - stage.getHeight()); 
stage.setAlwaysOnTop(true); 

結果は次のようになります

enter image description here

関連する問題