JTreeTable DnD сумасшедший мигающий курсор перетаскивания

Я использую слегка измененную версию примера Sun JTreeTable , поддерживаемый моей собственной моделью. Это будет третий пример (один закладки на http://java.sun.com/products/jfc/tsc/articles/bookmarks/ ).

Все работает так, как ожидалось, кроме поддержки перетаскивания. Я хотел DnD, который больше похож на то, что предоставляет JTree . Поскольку JTreeTable является расширенным JTable , он предоставляет Класс JTable.DropLocation для определения местоположения перетаскивания, который не предлагает достаточно информации при перетаскивании материала в столбец, отображаемый в виде дерева JTreeTable (без пути и без дочернего индекса). Я уже решил эту проблему, создав собственный класс DropLocation , который основан на комбинации его версий JTable и JTree . Я также изменил метод рисования класса TreeTableCellRenderer , который предоставляется упомянутой реализацией JTreeTable , чтобы показать эту новую информацию пользователю (теперь она может видеть, узел будет помещен внутри, до или после выбранного узла, если он находится внутри столбца дерева, как и следовало ожидать от JTree ).

Но есть одна проблема.Курсор мыши сходит с ума, когда место перетаскивания отображается внутри столбца дерева. Он появляется, а затем исчезает через несколько миллисекунд или происходит так быстро, что курсор перетаскивания даже не отображается. То же самое происходит и с неизмененным примером Солнца. Я совершенно не понимаю, почему это происходит. Нашел другого человека с той же проблемой на http://www.java.net/node/663106 , но предоставленное там решение, похоже, устанавливает нулевое расположение компонента и не может быть получено с помощью ] JTreeTable.getDropLocation () больше не используется. Мне это нужно, чтобы преобразовать его в мой измененный DropLocation , а затем нарисовать материал на его основе. Я так близок к правильному решению для моего варианта использования, что могу его попробовать. Этот мигающий курсор - единственное препятствие на моем пути. Есть идеи?

Использование Java 1.6.

PS: Я решил использовать пользовательский JTreeTable , а не один из существующих компонентов (например, Netbeans Outline или JXTreeTable ), потому что все они, похоже, страдают от JTable.DropLocation и не предлагают поддержку для отбрасывания до или после выбранного узла дерева (только внутри). Если вам известен компонент, обеспечивающий такую ​​функциональность, я был бы рад услышать об этом.

6
задан Eng.Fouad 23 November 2011 в 11:35
поделиться