2009-05-21 50 views
0

我在JScrollPane中有JTable。我爲表格的其中一列創建了自定義單元格編輯器,並且我希望此編輯器彈出一個滾動JList。我已通過使用Popup來顯示包含JList的新JScrollPaneSwing:從JScrollPane中定位彈出框

一切正常,除了Popup的位置。對於編輯我的自定義組件基本上是這樣的:

public class CustomPanel extends JPanel { 
    JTextField text = new JTextField(); 
    JList list = new JList(); 
    JScrollPane scroll = new JScrollPane(list); 
    Component owner = null; 
    public CustomPanel(Component owner) { 
     this.owner = owner; 
     add(text); 
    } 
    public void showPopup() { 
     Popup p = PopupFactory.getPopup(owner, scroll, getX(), getY()+getHeight()); 
     p.show(); 
    } 
} 

正在發生的事情是,getX()getY()正在返回相對於JScrollPane的表格單元格的把持它的位置,Popup是想要絕對的屏幕位置。即使我通過ownerJScrollPane他們是相對的,它不起作用。如果我使用text.getX()/text.getY(),我會遇到同樣的問題。

如何將我的Popup直接放在TextBox以下?

只是更多的背景:最終目標是一個多選組合框,它將所有選中的項目顯示爲逗號分隔列表。如果其他類似的東西已經存在,請不要猶豫,指向我。

編輯:owner.getLocationOnScreen().y + getY()當滾動窗格不在任何地方,但滾動一直向上時不起作用。然而,只是簡單的getLocationOnScreen().y能工作。問題解決了,謝謝。

回答