Spec-Zone.ru › OpenJavaFX 21

Класс Clipboard

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 или любой другой богатый текстовый формат, поддерживаемый моим типом документа. Если нет, то я могу просто взять строку.

Или, например, если у меня есть обычный текстовый документ, я просто получу строковое представление и воспользуюсь им, если оно доступно. Я могу проверить, имеет ли буфер обмена "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, но не может использоваться для обмена данными между несколькими приложениями.

С момента:
JavaFX 2.0

Краткое описание методов

Модификатор и тип Метод Описание
final void clear()
Очищает буфер обмена от всех данных.
final Object getContent(DataFormat dataFormat)
Возвращает содержимое, хранящееся в данном буфере обмена заданного типа, или null, если такого содержимого нет.
final Set<DataFormat> getContentTypes()
Возвращает набор типов DataFormat в данном экземпляре буфера обмена, для которых зарегистрированы данные.
final List<File> getFiles()
Получает список файлов из буфера обмена, которые ранее были зарегистрированы.
final String getHtml()
Получает строку HTML-текста из буфера обмена, которая ранее была зарегистрирована.
final Image getImage()
Получает изображение из буфера обмена, которое ранее было зарегистрировано.
final String getRtf()
Получает строку RTF-текста из буфера обмена, которая ранее была зарегистрирована.
final String getString()
Получает строку простого текста из буфера обмена, которая ранее была зарегистрирована.
static Clipboard getSystemClipboard()
Получает текущий буфер обмена системы, через который данные могут храниться и извлекаться.
final String getUrl()
Получает строку URL из буфера обмена, которая ранее была зарегистрирована.
final boolean hasContent(DataFormat dataFormat)
Проверяет, есть ли содержимое в этом буфере обмена данного типа DataFormat.
final boolean hasFiles()
Возвращает, зарегистрирован ли в данном буфере обмена список файлов (DataFormat.FILES).
final boolean hasHtml()
Возвращает, зарегистрирована ли в данном буфере обмена строка HTML-текста (DataFormat.HTML).
final boolean hasImage()
Возвращает, зарегистрировано ли в данном буфере обмена изображение (DataFormat.IMAGE).
final boolean hasRtf()
Возвращает, зарегистрирована ли в данном буфере обмена строка RTF (DataFormat.RTF).
final boolean hasString()
Возвращает, зарегистрирована ли в данном буфере обмена строка простого текста (DataFormat.PLAIN_TEXT).
final boolean hasUrl()
Возвращает, зарегистрирована ли в данном буфере обмена строка URL (DataFormat.URL).
final boolean setContent(Map<DataFormat,Object> content)
Помещает содержимое в буфер обмена.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

getSystemClipboard

public static Clipboard getSystemClipboard()
Получает текущую системную буфер обмена, через который данные могут храниться и извлекаться. Для приложения JavaFX существует только один системный буфер обмена.
Возвращает:
Единственный системный буфер обмена, используемый для операций вырезания/копирования/вставки

очистить

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API