我在JScrollPane
中有JTable
。我爲表格的其中一列創建了自定義單元格編輯器,並且我希望此編輯器彈出一個滾動JList
。我已通過使用Popup
來顯示包含JList
的新JScrollPane
。Swing:從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
是想要絕對的屏幕位置。即使我通過owner
JScrollPane
他們是相對的,它不起作用。如果我使用text.getX()
/text.getY()
,我會遇到同樣的問題。
如何將我的Popup
直接放在TextBox
以下?
只是更多的背景:最終目標是一個多選組合框,它將所有選中的項目顯示爲逗號分隔列表。如果其他類似的東西已經存在,請不要猶豫,指向我。
編輯:owner.getLocationOnScreen().y + getY()
當滾動窗格不在任何地方,但滾動一直向上時不起作用。然而,只是簡單的getLocationOnScreen().y
能工作。問題解決了,謝謝。