Java 如何实现一个弹出JDialog并对它定位
请看下具体要求:我在一个JFrame界面上建立一个按扭,然后点下这个按扭就弹出一个JDialog窗口,这些步骤都做好了,关键的是我如何对这个新弹出的JDialog实现定位...
请看下具体要求:我在一个JFrame界面上建立一个按扭,然后点下这个按扭就弹出一个JDialog窗口,这些步骤都做好了,关键的是我如何对这个新弹出的JDialog实现定位,并且它的位置必须以JFrame为参照,如果我拖动JFrame窗口这个JDialog也要跟着一起动。
急~~求高手帮忙,希望能把关键的代码写出来...
如果弹出的窗口不是JDialog也可以,只要有这种效果就好了。 展开
急~~求高手帮忙,希望能把关键的代码写出来...
如果弹出的窗口不是JDialog也可以,只要有这种效果就好了。 展开
2个回答
展开全部
我写了一个方法用于计算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()的参数。如果还有什么不懂可以给我发信息,为你解答
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()的参数。如果还有什么不懂可以给我发信息,为你解答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |