- java.lang.Object
-
- javafx.scene.input.Clipboard
-
- Прямые подклассы:
Dragboard
public class Clipboard extends Object
Представляет буфер обмена операционной системы, в который можно помещать данные, например, при операциях вырезания, копирования и вставки.Для доступа к общему буферу обмена системы используйте следующий код:
Clipboard clipboard = Clipboard.getSystemClipboard();В приложении существует только один экземпляр буфера обмена системы, поэтому вполне допустимо сохранить ссылку на него в удобном месте, если это необходимо.
Буфер обмена работает с концепцией наличия единственного концептуального элемента в буфере обмена в любой момент времени — хотя он может быть помещен в буфер обмена в разных форматах. Например, пользователь может выбрать текст в редакторе HTML и нажать Ctrl+C или Cmd+C для копирования. В этом случае тот же текст может быть доступен в буфере обмена как HTML, так и как обычный текст. В буфере обмена существуют две копии данных, но они оба представляют одни и те же данные.
Содержимое в буфере обмена задается с помощью метода
setContent(java.util.Map<javafx.scene.input.DataFormat, java.lang.Object>). Сначала создайте объект ClipboardContent, а затем вызовите setContent. Каждый раз при вызове setContent любые предыдущие данные в буфере обмена очищаются и заменяются новым содержимым.final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString("Some text"); content.putHtml("<b>Some</b> text"); clipboard.setContent(content);Класс
ClipboardContent— это просто карта с удобными методами для работы с распространенными типами данных, добавленными в буфер обмена.Поскольку могут существовать несколько представлений одних и тех же данных в буфере обмена, и разные приложения имеют разные возможности обработки разных типов содержимого, важно помещать как можно больше представлений данных в буфер обмена, чтобы облегчить использование внешними приложениями. Обратите внимание, что иногда операционная система может помочь в некоторых случаях и добавить несколько типов за вас. Например, Mac может установить строку обычного текста за вас, когда вы укажете тип RTF. Как и при каких обстоятельствах это происходит, выходит за рамки данной спецификации, обратитесь к документации вашей ОС.
При чтении данных из буфера обмена важно сначала искать самый богатый поддерживаемый тип. Например, если у меня есть текстовый документ, поддерживающий встраивание изображений и медиаформатов, при вставке содержимого из буфера обмена я должен сначала проверить, можно ли представить содержимое как медиа или как изображение. Если нет, тогда я могу проверить RTF или HTML или любой другой формат форматирования богатого текста, который поддерживается моим типом документа. Если нет, я могу взять строку String.
Или, например, если у меня есть текстовый документ, я просто получу строковое представление String и использую его, если оно доступно. Я могу проверить, имеет ли буфер обмена "hasHtml" или "hasString".
if (clipboard.hasString()) { ... }В дополнение к общим или встроенным типам вы можете поместить любые произвольные данные в буфер обмена (при условии, что они сериализуемы).
Типы содержимого определяются объектами DataFormat. Класс DataFormat определяет неизменяемый объект, и для распространенных типов DataFormat существует ряд статических конечных полей. Конечно, также можно объявлять и использовать типы DataFormat, специфичные для приложения. Следующие два метода эквивалентны (и второй вызов переопределит первый!)
ClipboardContent content = new ClipboardContent(); content.putString("some text"); content.put(DataFormat.PLAIN_TEXT, "other text");На встраиваемых платформах, не имеющих собственной системы окон, буфер обмена, возвращаемый Clipboard.getSystemClipboard(), может быть недоступен извне приложения JavaFX.
Если присутствует менеджер безопасности, приложение должно иметь разрешение
FXPermission"accessClipboard", чтобы буфер обмена, возвращаемый Clipboard.getSystemClipboard(), был доступен извне приложения JavaFX. Для совместимости с предыдущими версиями JDK эквивалентноеAWTPermission"accessClipboard" также позволит получить доступ к буферу обмена FX извне приложения JavaFX.Если у приложения отсутствует разрешение или платформа не поддерживает общий буфер обмена, буфер обмена, возвращаемый Clipboard.getSystemClipboard(), можно использовать для обмена данными между разными частями одного приложения JavaFX, но нельзя использовать для обмена данными между несколькими приложениями.
- Since:
- JavaFX 2.0
-
Краткое описание методов
Все методыСтатические методыМетоды экземпляраКонкретные методы Модификатор и тип Метод Описание voidclear()Очищает буфер обмена от всех данных.ObjectgetContent(DataFormat dataFormat)Возвращает содержимое, хранящееся в этом буфере обмена заданного типа, или null, если нет содержимого с этим типом.Set<DataFormat>getContentTypes()Возвращает набор типов DataFormat в этом экземпляре Clipboard, для которых зарегистрированы ассоциированные данные в буфере обмена.List<File>getFiles()Возвращает список файлов из буфера обмена, которые были предварительно зарегистрированы.StringgetHtml()Возвращает строку HTML-текста из буфера обмена, которая была предварительно зарегистрирована.ImagegetImage()Возвращает изображение из буфера обмена, которое было предварительно зарегистрировано.StringgetRtf()Возвращает строку RTF-текста из буфера обмена, которая была предварительно зарегистрирована.StringgetString()Возвращает строку обычного текста из буфера обмена, которая была предварительно зарегистрирована.static ClipboardgetSystemClipboard()Возвращает текущий буфер обмена системы, через который можно хранить и извлекать данные.StringgetUrl()Возвращает строку URL из буфера обмена, которая была предварительно зарегистрирована.booleanhasContent(DataFormat dataFormat)Проверяет, есть ли в этом буфере обмена содержимое заданного типа DataFormat.booleanhasFiles()Возвращает значение, указывающее, был ли зарегистрирован список файлов (DataFormat.FILES) в этом буфере обмена.booleanhasHtml()Возвращает значение, указывающее, была ли зарегистрирована строка HTML-текста (DataFormat.HTML) в этом буфере обмена.booleanhasImage()Возвращает значение, указывающее, было ли зарегистрировано изображение (DataFormat.IMAGE) в этом буфере обмена.booleanhasRtf()Возвращает значение, указывающее, была ли зарегистрирована строка RTF (DataFormat.RTF) в этом буфере обмена.booleanhasString()Возвращает значение, указывающее, была ли зарегистрирована строка простого текста (DataFormat.PLAIN_TEXT) в этом буфере обмена.booleanhasUrl()Возвращает значение, указывающее, была ли зарегистрирована строка url (DataFormat.URL) в этом буфере обмена.booleansetContent(Map<DataFormat,Object> content)Помещает содержимое в буфер обмена.
-
Подробное описание методов
-
getSystemClipboard
public static Clipboard getSystemClipboard()
Получает текущий системный буфер обмена, через который можно хранить и извлекать данные. Для приложения JavaFX всегда существует только один системный буфер обмена.- Возвращает:
- Единственный системный буфер обмена, используемый для операций вырезания/копирования/вставки
-
clear
public final void clear()
Очищает буфер обмена от всех данных. Любой последующий вызовgetContentTypes()перед добавлением новых данных в буфер обмена вернёт пустой набор.
-
getContentTypes
public final Set<DataFormat> getContentTypes()
Получает набор типов DataFormat в этом экземпляре буфера обмена, для которых в буфере зарегистрированы данные. Этот набор всегда не null и неизменяем. Если буфер обмена впоследствии изменяется, возвращённый набор не обновляется.- Возвращает:
- Не пустой неизменяемый набор типов содержимого.
-
setContent
public final boolean setContent(Map<DataFormat,Object> content)
Добавляет содержимое в буфер обмена. Этот вызов всегда приводит к очистке всех предыдущих данных из буфера обмена и их замене на содержимое, указанное в предоставленном отображении ClipboardContent.- Параметры:
-
content- Содержимое для добавления в буфер обмена. Если null, буфер обмена просто очищается и новое содержимое не добавляется. - Возвращает:
- True, если успешно, false, если содержимое не добавлено.
- Исключения:
-
NullPointerException- если передан null для любого формата данных
-
getContent
public final Object getContent(DataFormat dataFormat)
Возвращает содержимое, хранящееся в этом буфере обмена, указанного типа, или null, если содержимого этого типа нет.- Параметры:
-
dataFormat- тип формата - Возвращает:
- Содержимое, связанное с этим типом, или null, если его нет
-
hasContent
public final boolean hasContent(DataFormat dataFormat)
Проверяет, есть ли в этом буфере обмена содержимое заданного типа DataFormat.- Параметры:
-
dataFormat- тип формата - Возвращает:
- true, если в этом буфере обмена есть содержимое этого типа
-
hasString
public final boolean hasString()
Определяет, зарегистрирована ли в этом буфере обмена простая строка текста (DataFormat.PLAIN_TEXT).- Возвращает:
- true, если
hasContent(DataFormat.PLAIN_TEXT)возвращает true, иначе false
-
getString
public final String getString()
Получает простую текстовую строку из буфера обмена, которая была ранее зарегистрирована. Это эквивалентно вызовуgetContent(DataFormat.PLAIN_TEXT). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.PLAIN_TEXT, или null, если её нет.
-
hasUrl
public final boolean hasUrl()
Определяет, зарегистрирована ли в этом буфере обмена строка URL (DataFormat.URL).- Возвращает:
- true, если hasContent(DataFormat.URL) возвращает true, иначе false
-
getUrl
public final String getUrl()
Получает строку URL из буфера обмена, которая была ранее зарегистрирована. Это эквивалентно вызовуgetContent(DataFormat.URL). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.URL, или null, если её нет.
-
hasHtml
public final boolean hasHtml()
Определяет, зарегистрирована ли в этом буфере обмена строка HTML (DataFormat.HTML).- Возвращает:
- true, если
hasContent(DataFormat.HTML)возвращает true, иначе false
-
getHtml
public final String getHtml()
Получает строку HTML из буфера обмена, которая была ранее зарегистрирована. Это эквивалентно вызовуgetContent(DataFormat.HTML). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.HTML, или null, если её нет.
-
hasRtf
public final boolean hasRtf()
Определяет, зарегистрирована ли в этом буфере обмена строка RTF (DataFormat.RTF).- Возвращает:
- true, если hasContent(DataFormat.RTF) возвращает true, иначе false
-
getRtf
public final String getRtf()
Получает строку RTF из буфера обмена, которая была ранее зарегистрирована. Это эквивалентно вызовуgetContent(DataFormat.RTF). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.RTF, или null, если её нет.
-
hasImage
public final boolean hasImage()
Определяет, зарегистрирован ли в этом буфере обмена объект Image (DataFormat.IMAGE).- Возвращает:
- true, если hasContent(DataFormat.IMAGE) возвращает true, иначе false
-
getImage
public final Image getImage()
Получает объект Image из буфера обмена, который был ранее зарегистрирован. Это эквивалентно вызовуgetContent(DataFormat.IMAGE). Если такой записи нет, возвращается null.- Возвращает:
- Объект Image в буфере обмена, связанный с DataFormat.IMAGE, или null, если его нет.
-
hasFiles
public final boolean hasFiles()
Определяет, зарегистрирован ли в этом буфере обмена список файлов (DataFormat.FILES).- Возвращает:
- true, если hasContent(DataFormat.FILES) возвращает true, иначе false
-
getFiles
public final List<File> getFiles()
Получает список файлов из буфера обмена, который был ранее зарегистрирован. Это эквивалентно вызовуgetContent(DataFormat.FILES). Если такой записи нет, возвращается null.- Возвращает:
- Список файлов в буфере обмена, связанный с DataFormat.FILES, или null, если его нет.
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.