Как установить всплывающую подсказку в TreeCellRenderer?

Я застрял с установкой всплывающей подсказки для одной из моих JPanel, добавленных к узлу в JTree. Этот вопрос может быть похож на изменяемую подсказку узла JTree, но не полностью.

Я также использую JTree, заполненный некоторыми (настраиваемыми) узлами. Каждый узел содержит флажок, поле цвета (JPanel) и путь к узлу. Я реализую TreeCellRenderer. Я не размещал ниже код того, что добавляется в узел, поскольку считаю, что это не нужно.

Ниже приведена часть моего кода:

    public class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer {

        private static final long serialVersionUID = 4025435851260573240L;

        CheckTreeSelectionModel selectionModel; 
        private TreeCellRenderer delegate; 
        TristateCheckBox checkBox = new TristateCheckBox();
        JPanel panel = new JPanel();

        public CheckTreeCellRenderer(TreeCellRenderer delegate, CheckTreeSelectionModel selectionModel){
            this.delegate = delegate;
            this.selectionModel = selectionModel;

            setLayout(new BorderLayout()); 
            setOpaque(false); 
            checkBox.setOpaque(false);
        }

        public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
            Component renderer = delegate.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
            panel.setToolTipText("Hello");
            removeAll();
        add(checkBox, BorderLayout.WEST);
        add(panel, BorderLayout.CENTER);
        add(renderer, BorderLayout.EAST);

        return this;
    }
}

Как установить всплывающую подсказку для JPanel, добавляемого к узлу?


person ParagJ    schedule 03.06.2014    source источник
comment
Я не размещал ниже код для того, что добавляется в узел, поскольку считаю, что в этом нет необходимости. Чтобы быстрее получить помощь, отправьте MCVE (минимально полный и проверяемый пример).   -  person Andrew Thompson    schedule 03.06.2014
comment
Как я уже упоминал, я добавляю к узлу три компонента - флажок, JPanel и путь treenode. Но первые два компонента являются пользовательскими, поэтому размещение кода для них здесь будет неуместным и долгим.   -  person ParagJ    schedule 03.06.2014
comment
JComponent имеет метод setTooltipText. Итак, вам нужно установить всплывающую подсказку в методе getTreeCellRendererComponent. Что-то вроде этого. SetToolTipText (это текст);   -  person Sergiy Medvynskyy    schedule 03.06.2014
comment
Да, я написал в приведенном выше примере кода. К сожалению, это не работает.   -  person ParagJ    schedule 03.06.2014


Ответы (1)


Взгляните на документы JTree.getToolTipText:

ПРИМЕЧАНИЕ. Для того чтобы JTree правильно отображал всплывающие подсказки своих средств визуализации, JTree должен быть зарегистрированным компонентом с ToolTipManager. Это можно сделать, вызвав ToolTipManager.sharedInstance (). RegisterComponent (tree). Это не происходит автоматически!

Это исправит.

person Karsten    schedule 03.06.2014