Spec-Zone .ru
спецификации, руководства, описания, API
|
Следующий демонстрационный пример, LocationSensitiveDemo
, шоу a JTree
это было сконфигурировано, чтобы поддерживать отбрасывание на любом узле за исключением одного названного "именами" (или его потомки). Используйте текстовое поле наверху фрейма как перетащить источник (это автоматически постепенно увеличит строковое число каждый раз, когда Вы перетаскиваете оттуда).
Поле комбинированного списка ниже дерева позволяет Вам переключать поведение для того, чтобы показать расположение отбрасывания. Поведение значения по умолчанию Swing должно показать расположение отбрасывания только, когда область может принять отбрасывание. Можно переопределить это поведение, чтобы всегда показать расположение отбрасывания (даже если область не может принять отбрасывание) или никогда не показывать расположение отбрасывания (даже если область может принять отбрасывание).
LocationSensitiveDemo
Сеть Java™ использования canImport
метод для
похож на это:LocationSensitiveDemo
public boolean canImport(TransferHandler.TransferSupport info) { // for the demo, we will only support drops (not clipboard paste) if (!info.isDrop()) { return false; } String item = (String)indicateCombo.getSelectedItem(); if (item.equals("Always")) { info.setShowDropLocation(true); } else if (item.equals("Never")) { info.setShowDropLocation(false); } // we only import Strings if (!info.isDataFlavorSupported(DataFlavor.stringFlavor)) { return false; } // fetch the drop location JTree.DropLocation dl = (JTree.DropLocation)info.getDropLocation(); TreePath path = dl.getPath(); // we do not support invalid paths or descendants of the names folder if (path == null || namesPath.isDescendant(path)) { return false; } return true; }
Первый фрагмент кода, выведенный на экран полужирным, изменяет механизм обратной связи расположения отбрасывания. Если "Всегда", то расположение отбрасывания всегда показывают. Если "Никогда", расположение отбрасывания никогда не показывают. Иначе, поведение значения по умолчанию применяется.
Второй фрагмент кода, выведенный на экран полужирным, содержит логику, которая определяет, примет ли дерево данные. Если путь не будет допустимым путем или если это не будет путь имен (или его потомок), то это возвратит false, и импорт не будет принят.