Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ToolTipText для каждого Node в JTree / 2 сообщений из 2, страница 1 из 1
27.10.2005, 06:59
    #33346460
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolTipText для каждого Node в JTree
Привет народ.
Озадачился данным 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
27.10.2005, 08:55
    #33346535
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolTipText для каждого Node в JTree
Все, решил.
Надо действовать другим способом:
Создать свой класс, расширяющий
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
Форумы / Java [игнор отключен] [закрыт для гостей] / ToolTipText для каждого Node в JTree / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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