如何创建一个新的JFrame,将其位置设置为另一个JFrame的中间位置?

时间:2014-12-13 17:42:44

标签: java swing jframe

我是Java的新手,这就是我想要做的事情:

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分: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);

这会将frame2置于frame1之上 如果您选择.setLocationRelativeTo()方法,如果您在frame2.setVisible(true)之前frame2.setVisible(true)

,请不要忘记重复使用frame1.setVisible(true)

答案 2 :(得分:0)

使用setLocationRelativeTo(Component c)(如果您使用的是Java,请使用this doc),如下所示:

// center in parent
frame2.setLocationRelativeTo(frame1);

您也可以使用

将组件置于屏幕中心
// center in screen
frame2.setLocationRelativeTo( null );

如果您仍然遇到问题,请查看this question