2014-02-27 22 views
3

我想實現擴展功能,就像在下面的例子中一樣,但不是使用包含更復雜GUI元素的JFrame的菜單。 enter image description here 我遇到的問題是,如果我將它包含低於該框架應出現在按鈕的父窗口,我不能調整我的自定義的JFrame到Java打開一個JFrame相對於一個按鈕的位置(類似於行爲的菜單)

最初打開每個相對於按鈕的位置時我只是用

myCustomFrame.setLocation(myButton.getX(), (myButton.getY() + 73)); 

,但是這顯然如果我改變移動父窗口

之後,我試圖

myCustomFrame.setLocationRelativeTo(myButton); 
不起作用

但在這種情況下,它出現在按鈕的頂部...我調整了特定情況下的位置,但這不是一個解決方案。

所以我試圖得到與菜單一樣的行爲,這樣JFrame的位置就會自動調整。

有沒有人有任何建議?

回答

4

您是否考慮過使用myButton.getLocationOnScreen()?這樣,無論您在何處移動包含按鈕的jFrame,您都將始終獲得從屏幕左上角開始測量的按鈕點。

你可以改變你原來的方法是這樣的:

myCustomFrame.setLocation(myButton.getLocationOnScreen().x, (myButton.getLocationOnScreen().y + 73)); 
+0

我越來越IllegalComponentStateException異常 '異常在線程「AWT-EventQueue的 - 0」 java.awt.IllegalComponentStateException:組件必須顯示在屏幕以確定其位置' –

+0

父母正在顯示,但它說'組件必須顯示在屏幕上以確定其位置' –

+0

該組件是否可見?嘗試將組件背景顏色設置爲紅色,以便確保。 – sorifiend

相關問題