Я использую слегка модифицированную версию примера Sun JTreeTable
, подкрепленную моей собственной моделью.Это будет третий пример (одна закладка на http://java.sun.com/products/jfc/tsc/articles/bookmarks/).
Все работает, как и ожидалось, кроме поддержки перетаскивания. Я хотел DnD, который больше похож на то, что обеспечивает JTree
. Поскольку JTreeTable
является расширеннымJTable
предоставляет класс JTable.DropLocation
для определения местоположений отбрасывания, который не предоставляет достаточно информации при отбрасывании содержимого в столбец, отображаемый в виде дерева JTreeTable
(без пути и без дочернего индекса).пользовательский класс DropLocation
, основанный на комбинации его версий JTable
и * 1012. * Я также изменил метод рисования класса TreeTableCellRenderer
, который предоставляется упомянутой реализацией JTreeTable
, чтобы показатьэта новая информация для пользователя (теперь она может видеть, будет ли новый узел помещен внутри, до или после выбранного узла, если внутри столбца дерева, как вы ожидаете от JTree
).
Есть одна проблема, хотя: курсор мыши сходит с ума, когда расположение перетаскивания отображается внутри столбца дерева.ars, а затем исчезает через несколько миллисекунд или это происходит так быстро, что курсор перетаскивания даже не отображается.Это происходит и с примером неизмененного Солнца.Я полностью в неведении относительно того, почему это происходит.Обнаружил другого человека с такой же проблемой по номеру http://www.java.net/node/663106,, но решение, предоставленное там, по-видимому, устанавливает местоположение отбрасывания компонента на ноль и не может быть получено с использованием метода JTreeTable.getDropLocation()
Мне нужно это преобразовать в мой модифицированный DropLocation
и затем рисовать материал на его основе.Я настолько близок к подходящему решению для моего варианта использования, что могу его попробовать.Эта мигающая вещь - единственное препятствие на моем пути.Есть идеи?
Использование Java 1.6.
PS: я выбрал пользовательский JTreeTable
, а не один из существующих компонентов (например, Netbeans Outline или JXTreeTable
), потому что онивсе, похоже, страдают от проблемы JTable.DropLocation
и не предлагают поддержку удаления до или после выбранного узла дерева (только внутри).Если вам известен компонент, который обеспечивает такую функциональность, я был бы рад услышать об этом.