2014-12-13 71 views
0

我是新来的Java,这就是我想要做的事:如何创建一个新的JFrame,位置设置为另一个JFrame的中间位置?

我有frame1,其中有一个JButton,一旦点击,上创建的frame1顶新JFrame,我称之为frame2。我基本上想要在frame1的中间创建frame2。我该怎么做呢?

+0

包括您的相关代码 – HaveNoDisplayName 2014-12-13 17:44:02

+0

您创建它的方式与创建编号1相同,只是给它一个较小的尺寸。 – csmckelvey 2014-12-13 17:44:30

+0

是的,但默认情况下它只出现在屏幕的左上角。我想在第一帧的顶部。它与setLocationRelativeTo(...)有什么关系? – user2603506 2014-12-13 17:49:09

回答

3

您可以设置frame2相对于frame1位置的位置。

//Initialize your frames 
frame2.setLocationRelativeTo(frame1); 

这应该将frame2放置在frame1的顶部。

0

最简单的方法是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)

0

以前那样使用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我在屏幕组件如果你仍然有问题。

+0

请不要忘记使用[此链接](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

+0

@Charlie我编辑帖子以包含Java 8 doc链接。好的电话 - 谢谢! (无论如何,我认为马尔夫的答案完美无缺。) – 2014-12-13 18:06:15

相关问题