我是新来的Java,这就是我想要做的事:如何创建一个新的JFrame,位置设置为另一个JFrame的中间位置?
我有frame1
,其中有一个JButton
,一旦点击,上创建的frame1
顶新JFrame
,我称之为frame2
。我基本上想要在frame1
的中间创建frame2
。我该怎么做呢?
我是新来的Java,这就是我想要做的事:如何创建一个新的JFrame,位置设置为另一个JFrame的中间位置?
我有frame1
,其中有一个JButton
,一旦点击,上创建的frame1
顶新JFrame
,我称之为frame2
。我基本上想要在frame1
的中间创建frame2
。我该怎么做呢?
您可以设置frame2相对于frame1位置的位置。
//Initialize your frames
frame2.setLocationRelativeTo(frame1);
这应该将frame2放置在frame1的顶部。
最简单的方法是Marv's,但如果你想用数学来做,那就试试这个。
Point offSet=frame1.getLocation();
Dimension loc1=frame1.getSize();
Dimension loc2=frame2.getSize();
double newX=offSet.getX()+loc1.getWidth()/2.0-loc2.getWidth()/2.0;
double newY=offSet.getY()+loc1.getHeight()/2.0-loc2.getHeight()/2.0;
frame2.setLocation((int)Math.floor(newX), (int)Math.floor(newY));
frame2.setVisible(true);
这将会对frame1
顶部中央frame2
。
如果选择.setLocationRelativeTo()
方法,不,如果你frame1.setVisible(true)
以前那样使用frame2.setVisible(true)
setLocationRelativeTo(Component c)
如下(如果你使用的是Java 8使用this doc)忘记重新使用frame2.setVisible(true)
:
// center in parent
frame2.setLocationRelativeTo(frame1);
您也可以使用中心
// center in screen
frame2.setLocationRelativeTo(null);
退房this question我在屏幕组件如果你仍然有问题。
请不要忘记使用[此链接](http://docs.oracle.com。 com/javase/8/docs/api/java/awt/Window.html#setLocationRelativeTo-java.awt.Component-)如果OP使用Java 8 – Charlie 2014-12-13 18:00:37
@Charlie我编辑帖子以包含Java 8 doc链接。好的电话 - 谢谢! (无论如何,我认为马尔夫的答案完美无缺。) – 2014-12-13 18:06:15
包括您的相关代码 – HaveNoDisplayName 2014-12-13 17:44:02
您创建它的方式与创建编号1相同,只是给它一个较小的尺寸。 – csmckelvey 2014-12-13 17:44:30
是的,但默认情况下它只出现在屏幕的左上角。我想在第一帧的顶部。它与setLocationRelativeTo(...)有什么关系? – user2603506 2014-12-13 17:49:09