powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ToolTipText для каждого Node в JTree
2 сообщений из 2, страница 1 из 1
ToolTipText для каждого Node в JTree
    #33346460
Фотография Vector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет народ.
Озадачился данным Subject.
Есть JTree, необходимо при перемещении мышки над узлами отображать текст узла во всплывающей подсказке, так как дерево может быть узкое и всего названия не видно.
Использую следующий подход:
определяю узел над которым мышка перемещеается в данный момент;

устанавливаю в ToolTipText для всего дерева название этого узла.
В результате ToolTipText устанавливается, а сама подсказка не появляется.
Вот мой код (код создан в среде NetBeans4.1):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 private   void  TopicsTreeMouseMoved(java.awt.event.MouseEvent evt) {                 
// TODO add your handling code here:
        java.awt.Point p=evt.getPoint();
        javax.swing.tree.TreePath selPath = TopicsTree.getPathForLocation(p.x, p.y);
         if (selPath!= null ) {
            javax.swing.tree.DefaultMutableTreeNode node=(javax.swing.tree.DefaultMutableTreeNode)selPath.getLastPathComponent();
            HelpTopic ht=(HelpTopic)(node.getUserObject());
            TopicsTree.setToolTipText(ht.toString());
//            javax.swing.JOptionPane.showMessageDialog(null, TopicsTree.getToolTipText(), "Warning", javax.swing.JOptionPane.WARNING_MESSAGE);        
        }
         else  TopicsTree.setToolTipText("");
    }                                     

Данный метод зарегистрирован в слушателе для JTree:
Код: plaintext
1.
2.
3.
4.
5.
        TopicsTree.addMouseMotionListener( new  java.awt.event.MouseMotionAdapter() {
             public   void  mouseMoved(java.awt.event.MouseEvent evt) {
                TopicsTreeMouseMoved(evt);
            }
        });
Как бы все работает - событие происходит, ToolTipText устанавливается, а вот сама всплывающая подсказка не появляется.

Подскажите please, как решить данную задачу.
С уважением Vector.
...
Рейтинг: 0 / 0
ToolTipText для каждого Node в JTree
    #33346535
Фотография Vector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, решил.
Надо действовать другим способом:
Создать свой класс, расширяющий
extends javax.swing.tree.DefaultTreeCellRenderer;

и в нем переопределить
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
     public  java.awt.Component getTreeCellRendererComponent(javax.swing.JTree tree, Object value, 
             boolean  sel,  boolean  expanded,  boolean  leaf,  int  row,  boolean  hasFocus) {
         super .getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
        setToolTipText(getNodeText(value));
         return   this ;
    }

     protected  java.lang.String getNodeText(Object value){
        javax.swing.tree.DefaultMutableTreeNode node=(javax.swing.tree.DefaultMutableTreeNode)value;
        //У меня свой собственный класс для каждого узла дерева, поэтому
        HelpTopic helpTopic=(HelpTopic)(node.getUserObject());

В общем, спасибо всем, кто проявил интерес к моему вопросу и удачи.
         return  helpTopic.toString();
        //Если же просто строка заносится для узла, то, наверное, надо так
        //return (java.lang.String)(node.getUserObject());
    }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ToolTipText для каждого Node в JTree
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]