メニューを開くボタンの位置に応じて、JPopupMenu
の位置を設定します。私のコードは最初のモニターで正常に動作しますが、別の高さを持つ2番目のモニターでは失敗します。 問題はgetLocationOnScreen()
で、コンポーネントが表示されている実際の画面ではなく、メイン画面を基準にして場所を配信します。現在のモニタでコンポーネントの位置を取得します
マイコード:
// screenSize represents the size of the screen where the button is
// currently showing
final Rectangle screenSize = dateButton.getGraphicsConfiguration().getBounds();
final int yScreen = screenSize.height;
int preferredY;
// getLocationOnScreen does always give the relative position to the main screen
if (getLocationOnScreen().y + dateButton.getHeight() + datePopup.getPreferredSize().height > yScreen) {
preferredY = -datePopup.getPreferredSize().height;
} else {
preferredY = getPreferredSize().height;
}
datePopup.show(DateSpinner.this, 0, preferredY);
どのように私はその実際のモニター上のコンポーネントの位置を得ることができますか?
セカンダリモニタが反対側のサイトの場合はどうなりますか?プライマリおよびセカンダリモニタが変更されたらどうなりますか? – Stefan
"+ ="であってはなりませんか? –