「SWTで画面の外にウィンドウが出た場合に位置を修正する方法」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
Rectangle r = parent.getBounds();
Point location = parent.getParent().toDisplay(r.x, r.y);
Shell shell = new Shell(parent, checkStyle(SWT.NONE));
// 画面の外に出ない対応
shell.setBounds(location.x, location.y, listSize.x, listSize.y);//一度セットしてからモニタを取得する
Monitor moni = shell.getMonitor();
Rectangle moniRect = moni.getBounds();
if (location.x < moniRect.x) {
location.x = moniRect.x;
} else if ((moniRect.x + moniRect.width) < location.x + listSize.x) {
location.x = moniRect.x + moniRect.width - listSize.x;
}
if (location.y < moniRect.y) {
location.y = moniRect.y;
} else if ((moniRect.y + moniRect.height) < location.y + listSize.y) {
location.y = moniRect.y + moniRect.height - listSize.y;
}
-----
Rectangle r = parent.getBounds();
Point location = parent.getParent().toDisplay(r.x, r.y);
Shell shell = new Shell(parent, checkStyle(SWT.NONE));
// 画面の外に出ない対応
shell.setBounds(location.x, location.y, listSize.x, listSize.y);//一度セットしてからモニタを取得する
Monitor moni = shell.getMonitor();
Rectangle moniRect = moni.getBounds();
if (location.x < moniRect.x) {
location.x = moniRect.x;
} else if ((moniRect.x + moniRect.width) < location.x + listSize.x) {
location.x = moniRect.x + moniRect.width - listSize.x;
}
if (location.y < moniRect.y) {
location.y = moniRect.y;
} else if ((moniRect.y + moniRect.height) < location.y + listSize.y) {
location.y = moniRect.y + moniRect.height - listSize.y;
}
-----