Класс TransferHandler
- Все реализованные интерфейсы:
Serializable
public class TransferHandler extends Object implements Serializable
Transferable к компонентам Swing и из них. Transferable используется для представления данных, которые обмениваются при операциях «вырезать», «копировать» или «вставить» с буфером обмена. Он также используется в операциях перетаскивания для представления перетаскивания из компонента и опускания в компонент. Swing предоставляет функциональность, которая автоматически поддерживает сочетания клавиш «вырезать», «копировать» и «вставить», использующие функциональность, предоставляемую реализацией этого класса. Swing также предоставляет функциональность, которая автоматически поддерживает перетаскивание, использующую функциональность, предоставляемую реализацией этого класса. Разработчик Swing может сконцентрироваться на определении семантики передачи, в основном, установив свойство transferHandler на компоненте Swing. Этот класс реализован для обеспечения стандартного поведения передачи свойства компонента просто путём указания имени свойства в конструкторе. Например, для передачи цвета переднего плана с одного компонента на другой, либо через буфер обмена, либо через операцию перетаскивания, можно создать TransferHandler со строкой "foreground". Встроенная поддержка будет использовать цвет, возвращаемый getForeground, в качестве источника передачи, а setForeground - для целевого компонента передачи.
Дополнительную информацию см. в разделе Как использовать перетаскивание и передачу данных в руководстве Java.
- С момента:
- 1.4
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
TransferHandler.DropLocation |
Представляет место, куда необходимо вставить опущенные данные. |
static final class |
TransferHandler.TransferSupport |
Этот класс инкапсулирует все необходимые детали передачи данных в буфер обмена или перетаскивания, а также позволяет настраивать аспекты опыта перетаскивания. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
COPY |
Представление действия передачи «копировать». |
static final int |
COPY_OR_MOVE |
Представление возможности действия источника, либо «копировать», либо «переместить». |
static final int |
LINK |
Представление действия передачи «ссылка». |
static final int |
MOVE |
Представление действия передачи «переместить». |
static final int |
NONE |
Представление действия передачи без действия. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Удобный конструктор для подклассов. |
|
| Создаёт обработчик передачи, который может передавать свойство Java Bean с одного компонента на другой через буфер обмена или операцию перетаскивания. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canImport |
Указывает, будет ли компонент принимать импорт заданного набора типов данных перед фактической попыткой импорта. |
boolean |
canImport |
Этот метод вызывается многократно во время операции перетаскивания, чтобы позволить разработчику настроить свойства и вернуть приемлемость передачи; значение true указывает, что передача, представленная данным TransferSupport (который содержит все детали передачи), приемлема в данный момент, а значение false отклоняет передачу. |
protected Transferable |
createTransferable |
Создаёт Transferable для использования в качестве источника передачи данных. |
void |
exportAsDrag |
Инициализирует поддержку перетаскивания Swing. |
protected void |
exportDone |
Вызывается после экспорта данных. |
void |
exportToClipboard |
Производит передачу данных из заданного компонента в заданный буфер обмена. |
static Action |
getCopyAction() |
Возвращает Action, выполняющий операции копирования в буфер обмена. |
static Action |
getCutAction() |
Возвращает Action, выполняющий операции вырезания в буфер обмена. |
Image |
getDragImage() |
Возвращает изображение перетаскивания. |
Point |
getDragImageOffset() |
Возвращает смещение якоря для изображения, которое нужно перетащить. |
static Action |
getPasteAction() |
Возвращает Action, выполняющий операции вставки из буфера обмена. |
int |
getSourceActions |
Возвращает тип действий передачи, поддерживаемых источником; любая битовая комбинация COPY, MOVE и LINK. |
Icon |
getVisualRepresentation |
Возвращает объект, определяющий вид передачи. |
boolean |
importData |
Производит передачу в компонент из буфера обмена или операции перетаскивания. |
boolean |
importData |
Вызывает передачу из буфера обмена или операции перетаскивания. |
void |
setDragImage |
Устанавливает параметр изображения перетаскивания. |
void |
setDragImageOffset |
Устанавливает смещение якоря для изображения, которое нужно перетащить. |
Подробное описание полей
NONE
public static final int NONE
int без действия переноса.- См. также:
COPY
public static final int COPY
int «копирования». Это значение используется, когда данные копируются в буфер обмена или в другое место при операции перетаскивания.- См. также:
MOVE
public static final int MOVE
int «перемещения». Это значение используется, когда данные перемещаются в буфер обмена (т.е. вырезаются) или в другое место при операции перетаскивания.- См. также:
COPY_OR_MOVE
public static final int COPY_OR_MOVE
int возможности «копирования» или «перемещения».- См. также:
LINK
public static final int LINK
int «связи». Это значение используется для указания того, что данные должны быть связаны в операции перетаскивания.- С:
- 1.6
- См. также:
Подробное описание конструкторов
TransferHandler
public TransferHandler(String property)
- Параметры:
-
property- имя свойства для переноса; может бытьnull, если нет свойства, связанного с обработчиком переноса (например, подкласс, выполняющий другой вид переноса)
TransferHandler
protected TransferHandler()
Подробное описание методов
getCutAction
public static Action getCutAction()
Action, который выполняет операции вырезания в буфер обмена. При выполнении это действие работает с JComponent источником ActionEvent вызывая exportToClipboard, с действием MOVE, на TransferHandler компонента.- Возвращает:
Actionдля выполнения операций вырезания в буфер обмена
getCopyAction
public static Action getCopyAction()
Action который выполняет операции копирования в буфер обмена. При выполнении это действие работает с JComponent источником ActionEvent вызывая exportToClipboard, с действием COPY, на TransferHandler компонента.- Возвращает:
Actionдля выполнения операций копирования в буфер обмена
getPasteAction
public static Action getPasteAction()
Action который выполняет операции вставки из буфера обмена. При выполнении это действие работает с JComponent источником ActionEvent вызывая importData, с содержимым буфера обмена, на TransferHandler компонента.- Возвращает:
Actionдля выполнения операций вставки из буфера обмена
setDragImage
public void setDragImage(Image img)
- Параметры:
-
img- изображение для перетаскивания
getDragImage
public Image getDragImage()
null. - Возвращает:
- ссылку на изображение перетаскивания
setDragImageOffset
public void setDragImageOffset(Point p)
null.- Параметры:
-
p- объектPoint, соответствующий координатам смещения якоря изображения относительно верхнего левого угла изображения
getDragImageOffset
public Point getDragImageOffset()
- Возвращает:
- объект
Point, соответствующий координатам смещения якоря изображения относительно верхнего левого угла изображения. По умолчанию возвращает точку(0,0).
exportAsDrag
public void exportAsDrag(JComponent comp, InputEvent e, int action)
javax.swing.plaf.basic, если свойство dragEnabled установлено для компонента. Может быть вызвано пользовательскими реализациями UI для использования поддержки перетаскивания Swing. Также может быть вызвано расширением Swing, написанным как подкласс JComponent, чтобы использовать поддержку перетаскивания Swing. Перенос не обязательно будет завершен к возвращению этого вызова (т.е. вызов не блокирует ожидание завершения переноса). Перенос произойдёт через реализацию Swing механизма java.awt.dnd, не требуя дополнительных действий от разработчика. Метод exportDone будет вызван по завершении переноса.
- Параметры:
-
comp- компонент, содержащий данные для переноса; предоставлен для совместного использованияTransferHandler -
e- событие, которое инициировало перенос -
action- действие переноса, первоначально запрошенное; либоCOPY,MOVEилиLINK; система DnD может изменить используемое действие в ходе операции перетаскивания
exportToClipboard
public void exportToClipboard(JComponent comp, Clipboard clip, int action) throws IllegalStateException
Перенос выполняется с помощью механизма java.awt.datatransfer, не требуя дополнительных действий от разработчика. Любой перенос данных будет завершен, и метод exportDone будет вызван с произошедшим действием, прежде чем этот метод вернётся. Если буфер обмена недоступен при попытке размещения данных, исключение IllegalStateException, брошенное методом Clipboard.setContents(Transferable, ClipboardOwner), будет распространено через этот метод. Однако, метод exportDone будет сначала вызван с действием NONE для согласованности.
- Параметры:
-
comp- компонент, содержащий данные для переноса; предоставлен для совместного использованияTransferHandler -
clip- буфер обмена для переноса данных -
action- запрошенное действие переноса; должно быть значениемCOPYилиMOVE; выполняемая операция — пересечение возможностей переноса, предоставленных getSourceActions, и запрошенного действия; пересечение может привести к действиюNONE, если запрошенное действие не поддерживается - Исключения:
-
IllegalStateException- если буфер обмена недоступен в данный момент - См. также:
importData
public boolean importData(TransferHandler.TransferSupport support)
TransferSupport. В то время как реализация перетаскивания и опускания вызовет canImport для определения применимости переноса до вызова этого метода, реализация вставки этого не делает. Таким образом, нельзя предполагать, что перенос приемлем при вызове этого метода для вставки. Рекомендуется явно вызвать canImport для обработки этого случая.
Примечание: объект TransferSupport , переданный в этот метод, действителен только в течение вызова метода. Неопределено, какие значения он может содержать после возвращения из этого метода.
- Параметры:
-
support- объект, содержащий детали переноса, неnull. - Возвращает:
- true, если данные были вставлены в компонент, false — в противном случае
- Исключения:
-
NullPointerException- еслиsupportравноnull - С:
- 1.6
- См. также:
importData
public boolean importData(JComponent comp, Transferable t)
Transferable представляет данные, которые необходимо импортировать в компонент. Примечание: Swing теперь вызывает новую версию importData, которая принимает TransferSupport, которая в свою очередь вызывает этот метод (если компонент в TransferSupport является JComponent). Разработчикам рекомендуется вызывать и переопределять новую версию, так как она предоставляет больше информации (и является единственной версией, которая поддерживает использование с TransferHandler, заданным непосредственно на JFrame или другом не-JComponent).
- Parameters:
-
comp- компонент, который должен получить передачу; предоставляется для совместного использованияTransferHandler -
t- данные для импорта - Returns:
- true, если данные были вставлены в компонент, false — в противном случае
- See Also:
canImport
public boolean canImport(TransferHandler.TransferSupport support)
true указывает, что передача, представленная данным TransferSupport (который содержит все подробности передачи), приемлема в данный момент, а значение false отклоняет передачу. Для тех компонентов, которые автоматически отображают местоположение放下 во время перетаскивания и放下, принятие передачи по умолчанию сообщает им отображать местоположение放下. Это можно изменить, вызвав setShowDropLocation в TransferSupport.
По умолчанию, когда передача принимается, выбранное действие放下 — это действие, выбранное пользователем посредством жеста перетаскивания. Разработчик может переопределить это и выбрать другое действие из поддерживаемых действий источника, вызвав setDropAction в TransferSupport.
При каждом вызове canImport объект TransferSupport содержит свежие данные. Таким образом, любые свойства, установленные на нём, должны быть установлены при каждом вызове. При放下 canImport вызывается один раз перед вызовом importData. Любые состояния, установленные в TransferSupport во время последнего вызова, будут доступны в importData.
Этот метод не вызывается внутренне в ответ на операции вставки. Поэтому рекомендуется, чтобы реализации importData явным образом вызывали этот метод в таких случаях и чтобы этот метод был готов возвращать пригодность операций вставки также.
Примечание: объект TransferSupport, переданный в этот метод, действителен только в течение времени вызова метода. Не определено, какие значения он может содержать после возвращения из этого метода.
- Parameters:
-
support- объект, содержащий подробности о передаче, а неnull. - Returns:
-
trueесли импорт может произойти,falseв противном случае - Throws:
-
NullPointerException- еслиsupportявляетсяnull - Since:
- 1.6
- See Also:
canImport
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors)
Примечание: Swing теперь вызывает новую версию canImport, которая принимает TransferSupport, которая в свою очередь вызывает этот метод (только если компонент в TransferSupport является JComponent). Разработчикам рекомендуется вызывать и переопределять новую версию, так как она предоставляет больше информации (и является единственной версией, которая поддерживает использование с TransferHandler заданным непосредственно на JFrame или другом не-JComponent).
- Parameters:
-
comp- компонент, который должен получить передачу; предоставляется для совместного использованияTransferHandler -
transferFlavors- доступные форматы данных - Returns:
- true, если данные могут быть вставлены в компонент, false — в противном случае
- See Also:
getSourceActions
public int getSourceActions(JComponent c)
COPY, MOVE и LINK. Некоторые модели не изменяемы, поэтому операция передачи типа MOVE не должна объявляться в этом случае. Возврат NONE отключает передачи из компонента.
- Parameters:
-
c- компонент, содержащий данные, которые должны быть переданы; предоставляется для совместного использованияTransferHandler - Returns:
-
COPYесли свойство передачи найдено, в противном случае возвращаетNONE
getVisualRepresentation
public Icon getVisualRepresentation(Transferable t)
Icon не должна изменять графическую область или уровень альфа-канала. Реализация иконки не обязательно должна быть прямоугольной или рисовать всю ограничивающую прямоугольную область, и логика, вызывающая метод рисования иконок, не должна предполагать, что все биты нарисованы. null является допустимым возвращаемым значением для этого метода и указывает, что визуального представления не предоставлено. В этом случае вызывающая логика может представлять передаваемый элемент как угодно. Стандартная логика Swing не будет выполнять анимацию перетаскивания с альфа-смешиванием, если возвращается null.
- Parameters:
-
t- данные, подлежащие передаче; ожидается, что это значение было создано методомcreateTransferable - Returns:
-
null, что указывает на отсутствие стандартного визуального представления
createTransferable
protected Transferable createTransferable(JComponent c)
Transferable для использования в качестве источника передачи данных. Возвращает представление передаваемых данных или null, если свойство компонента null
- Parameters:
-
c- компонент, содержащий данные, подлежащие передаче; предоставляется для совместного использованияTransferHandler - Returns:
- представление передаваемых данных или
null, если свойство, связанное сc, являетсяnull
exportDone
protected void exportDone(JComponent source, Transferable data, int action)
MOVE. Этот метод реализован так, что ничего не делает, так как MOVE не является поддерживаемым действием этой реализации (getSourceActions не включает MOVE).
- Parameters:
-
source- компонент, являвшийся источником данных -
data- Передаваемые данные или возможно null, если действие являетсяNONE. -
action- фактически выполненное действие
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/TransferHandler.html