Качать:Размещение всплывающего окна внутри JScrollPane

StackOverflow https://stackoverflow.com/questions/895005

  •  23-08-2019
  •  | 
  •  

Вопрос

у меня есть JTable внутри JScrollPane.Я создаю собственный редактор ячеек для одного из столбцов таблицы и хочу, чтобы в этом редакторе отображалась кнопка прокрутки. JList.Я сделал это, используя Popup показать новый 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 хочет абсолютное положение экрана.Даже если я пройду owner тот JScrollPane что они относительно, это не работает.Я получаю ту же проблему, если использую text.getX() / text.getY().

Как я могу расположить свой Popup прямо под TextBox?

Еще немного предыстории:Конечная цель — это поле со списком с множественным выбором, в котором все выбранные элементы отображаются в виде списка, разделенного запятыми.Если что-то подобное уже существует, пожалуйста, не стесняйтесь указать мне на это.

Редактировать: owner.getLocationOnScreen().y + getY() не работает, когда панель прокрутки находится где угодно, но прокручена до конца.Однако просто getLocationOnScreen().y Работает.Проблема решена, спасибо.

Это было полезно?

Решение

Вы можете запросить абсолютное положение экрана с помощью Component.getLocationOnScreen().Это то, что вы ищете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top