Переопределить метод createToolTip () для JPanel в java - PullRequest
1 голос
/ 18 мая 2011

У меня есть ListCellRenderer, который расширяется JPanel.Сейчас я пытаюсь переопределить его createToolTip().Но похоже, что метод не переопределяется.В чем может быть причина?

Мой код:

public class MyRender extends JPanel implements ListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        if (value != null) {
            removeAll();

            // -- add data to JPanel.

            setToolTipText("hi");
            return this;
        }
        return null;
    }

    @Override
    public JToolTip createToolTip() {
        System.out.println("Success");
        return new MyToolTip();
    }
}

Он даже не печатает "Успех".

1 Ответ

1 голос
/ 18 мая 2011

Полагаю, этот метод никогда не вызывается, потому что ListCellRenderer действует как " резиновый штамп ", следовательно, он существует только во время перекраски и никогда не добавляется ни в один контейнер, в частности, не в * 1004.* ему присвоено значение.

Таким образом, всплывающая подсказка всегда создается самим JList, а не ListCellRenderer.

Если вы хотите, чтобы для каждого элемента была специальная подсказкаВаш список, то есть несколько способов, самый простой (но, возможно, не самый хороший), вероятно, подкласс JList и переопределить getToolTipText(MouseEvent e).Этот метод получил координаты мыши, для которых для получения всплывающей подсказки вам нужно будет преобразовать их в индекс элемента, над которым находится мышь, с помощью locationToIndex().

...