Java 如何实现一个弹出JDialog并对它定位

请看下具体要求:我在一个JFrame界面上建立一个按扭,然后点下这个按扭就弹出一个JDialog窗口,这些步骤都做好了,关键的是我如何对这个新弹出的JDialog实现定位... 请看下具体要求:我在一个JFrame界面上建立一个按扭,然后点下这个按扭就弹出一个JDialog窗口,这些步骤都做好了,关键的是我如何对这个新弹出的JDialog实现定位,并且它的位置必须以JFrame为参照,如果我拖动JFrame窗口这个JDialog也要跟着一起动。
急~~求高手帮忙,希望能把关键的代码写出来...
如果弹出的窗口不是JDialog也可以,只要有这种效果就好了。
展开
 我来答
御用灌水师
2009-05-05 · TA获得超过1573个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:725万
展开全部
我写了一个方法用于计算Dialog相对于Frame的位置,用了这个方法可以保证每次打开Dialog都在Frame的正中间并且不会超过屏幕范围。如果你要求移动Frame同时移动Dialog就得靠多线程了,那部分代码自己写吧。
private Point caculateLocation() {
Point ownerLocation = getOwner().getLocation();
Dimension ownerSize = getOwner().getSize();
//Get x and y by geometry relationship
double x = 0.5 * ownerSize.getWidth() +
ownerLocation.getX() - 0.5 * dialogWidth;
double y = 0.5 * ownerSize.getHeight() +
ownerLocation.getY() - 0.5 * dialogHeight;
int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().height;
//Make the dialog display in the area of screen
if (x < 1) {
x = 1;
}
if (y < 1) {
y = 1;
}
if (x > screenWidth - dialogWidth) {
x = screenWidth - dialogWidth;
}
if (y > screenHeight - dialogHeight) {
y = screenHeight - dialogHeight;
}
return new Point((int) x, (int) y);
}

这个方法应位于Dialog的子类,owner指的是指定的Frame,Toolkit为java.awt.Toolkit。得到的Point值就是dialog的setLocation()的参数。如果还有什么不懂可以给我发信息,为你解答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Raymondguo008
2009-05-05 · TA获得超过1634个赞
知道小有建树答主
回答量:887
采纳率:100%
帮助的人:477万
展开全部
试验了一下
貌似没有办法
和你一起等答案
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式