Spec-Zone.ru › OpenJavaFX 17

Класс 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 представляет собой просто карту с удобными методами для работы с распространенными типами данных, добавляемыми в буфер обмена.

Поскольку в буфере обмена могут существовать несколько представлений одних и тех же данных, а разные приложения имеют разные возможности обработки разных типов содержимого, важно поместить в буфер обмена как можно больше представлений данных для облегчения работы внешних приложений. Обратите внимание, что иногда операционная система может помочь в некоторых случаях и добавить несколько типов за вас. Например, macOS может установить строку простого текста за вас, когда вы укажете тип RTF. Как и при каких обстоятельствах это происходит, выходит за рамки этого спецификации; обратитесь к документации вашей ОС.

При чтении данных из буфера обмена важно сначала найти наиболее богатый поддерживаемый тип. Например, если у меня есть текстовый документ, который поддерживает вложение изображений и медиаформатов, при вставке содержимого из буфера обмена я должен сначала проверить, можно ли представить содержимое как медиа или как изображение. Если нет, я могу проверить RTF или HTML или любой другой формат форматированного текста, поддерживаемый моим типом документа. Если нет, я могу просто взять строку String.

Или, например, если у меня есть документ простого текста, то я просто получу строковое представление String и использую его, если оно доступно. Я могу проверить, "имеет ли буфер обмена" HTML или "строку String".


     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

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

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

clear

public final void clear()
Очищает буфер обмена от всех данных. Любой последующий вызов getContentTypes() перед добавлением новых данных в буфер обмена вернёт пустой набор.

getContentTypes

public final Set<DataFormat> getContentTypes()
Возвращает набор типов DataFormat в данном экземпляре буфера обмена, для которых зарегистрированы данные в буфере. Этот набор всегда не null и неизменяем. Если буфер обмена затем модифицируется, этот возвращаемый набор не обновляется.
Возвращает:
Не 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