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;
}
























最終更新:2010年02月24日 20:42
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。