新しい JWindow または JFrame を作成するときに、ウィンドウの端をモニターの表示されている端に右揃えにすることは可能ですか?
これは、複数のモニターを備えた Windows システムで使用されます。理想的には、新しいウィンドウの右端を一番右の画面の右端にスナップさせたいと考えています。現在、GraphicsDevices を取得し、並べ替え、ポイントの位置 + ウィンドウ サイズを比較し、ウィンドウの右端が表示可能な画面領域の境界外にあるかどうかを検出した場合、表示する前にウィンドウを「移動」するように位置を調整することでこれを行っています。本質的に同じアイデアであるこの質問を見つける前に、これを行いました(JFrameがマルチスクリーン環境で画面に表示されているかどうかを知る方法)。これで目的は達成。SSCCE の広告主が、私がすでに行っていることを投稿してほしいと思っていることは知っています。また、興味がある場合は、他の質問にも既に投稿されていますが、私の意図は、これらの結果を取得するためのより簡単でネイティブな方法があるかどうかを尋ねることです? 補足として、最初の呼び出しに 2.6 ミリ秒かかり、追加の呼び出しごとに 0.066 ミリ秒かかります。もともと私のナノ秒からミリ秒への計算は間違っていたので、現在はパフォーマンスは問題ではありませんが、これを行うためのより良い方法があるかどうかはまだ知りません.
興味がある場合は、デバッグ sysout の例をいくつか示します。最初の 2 つは最初のモニターの左側に、3 番目のテストは 2 番目のモニターの右側に:
最後のモニター長方形: java.awt.Rectangle[x=1920,y=150,width=1680,height=1050] 比較するポイント: java.awt.Point[x=20,y=100], windowWidth:1270 rightBoundOfMonitor: 3600.0 rightBoundOfNewWindow: 1290.0 範囲内 調整時間:2536893ns、2.536893ms 最後のモニター長方形: java.awt.Rectangle[x=1920,y=150,width=1680,height=1050] 比較するポイント: java.awt.Point[x=20,y=100], windowWidth:1270 rightBoundOfMonitor: 3600.0 rightBoundOfNewWindow: 1290.0 範囲内 調整時間:65880ns、0.06588ms 最後のモニター長方形: java.awt.Rectangle[x=1920,y=150,width=1680,height=1050] 比較するポイント: java.awt.Point[x=3147,y=315], windowWidth:1270 rightBoundOfMonitor: 3600.0 rightBoundOfNewWindow: 4417.0 立入禁止で 調整時間:152949ns、0.152949ms
編集: パフォーマンスは、当初考えていたほど問題ではありませんでした。(1000 ではなく、1 ミリ秒で 1000000 ns)。GraphicsDevice への最初の呼び出しには 2.5 ミリ秒かかりますが、これは許容範囲であり、位置を特定するための後続の呼び出しははるかに高速です。現在、私が思いついたよりも簡単にこれを行うための API 呼び出しや、他の人が派生したものはないようです。