2014-12-13 72 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

相關問題