0

我有JTable一个JScrollPane. 我正在为表格的一列创建一个自定义单元格编辑器,我希望这个编辑器弹出一个滚动的JList. 我已经通过使用 aPopup来显示一个JScrollPane包含JList.

一切正常,除了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的工作。问题已解决,谢谢。

4

1 回答 1

1

您可以使用 查询绝对屏幕位置Component.getLocationOnScreen()。那是你要找的吗?

于 2009-05-21T20:42:17.810 回答