我是新來的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