Класс 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.
Если платформа не поддерживает общий буфер обмена, буфер обмена, возвращаемый Clipboard.getSystemClipboard(), может использоваться для обмена данными между различными частями одного приложения JavaFX, но не может использоваться для обмена данными между несколькими приложениями.
- С:
- JavaFX 2.0
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final void |
clear() |
Очищает буфер обмена от всего содержимого. |
final Object |
getContent |
Возвращает содержимое, хранящееся в этом буфере обмена заданного типа, или null, если содержимого с этим типом нет. |
final Set |
getContentTypes() |
Получает набор типов DataFormat в этом экземпляре Clipboard, для которых зарегистрированы связанные данные в буфере обмена. |
final List |
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. |
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 |
Помещает содержимое в буфер обмена. |
Подробное описание методов
getSystemClipboard
public static Clipboard getSystemClipboard()
- Возвращает:
- Единственный системный буфер обмена, используемый для операций «Вырезать», «Копировать» и «Вставить»
clear
public final void clear()
getContentTypes() перед добавлением новых данных в буфер обмена вернёт пустой набор.getContentTypes
public final Set<DataFormat> getContentTypes()
- Возвращает:
- Не нулевой неизменяемый набор типов содержимого.
setContent
public final boolean setContent(Map<DataFormat,Object> content)
- Параметры:
-
content- Содержимое, добавляемое в буфер обмена. Если null, буфер обмена просто очищается и новое содержимое не добавляется. - Возвращает:
- True, если успешно, false, если содержимое не добавлено.
- Исключение:
-
NullPointerException- если передан null-ссылка на данные для любого формата
getContent
public final Object getContent(DataFormat dataFormat)
- Параметры:
-
dataFormat- тип формата - Возвращает:
- Содержимое, связанное с этим типом, или null, если его нет
hasContent
public final boolean hasContent(DataFormat dataFormat)
- Параметры:
-
dataFormat- тип формата - Возвращает:
- true, если в этом буфере обмена есть содержимое для этого типа
hasString
public final boolean hasString()
- Возвращает:
- 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()
- Возвращает:
- true, если hasContent(DataFormat.URL) возвращает true, иначе false
getUrl
public final String getUrl()
getContent(DataFormat.URL). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.URL, или null, если её нет.
hasHtml
public final boolean hasHtml()
- Возвращает:
- true, если
hasContent(DataFormat.HTML)возвращает true, иначе false
getHtml
public final String getHtml()
getContent(DataFormat.HTML). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.HTML, или null, если её нет.
hasRtf
public final boolean hasRtf()
- Возвращает:
- true, если hasContent(DataFormat.RTF) возвращает true, иначе false
getRtf
public final String getRtf()
getContent(DataFormat.RTF). Если такой записи нет, возвращается null.- Возвращает:
- Строка в буфере обмена, связанная с DataFormat.RTF, или null, если её нет.
hasImage
public final boolean hasImage()
- Возвращает:
- true, если hasContent(DataFormat.IMAGE) возвращает true, иначе false
getImage
public final Image getImage()
getContent(DataFormat.IMAGE). Если такой записи нет, возвращается null.- Возвращает:
- Объект Image в буфере обмена, связанный с DataFormat.IMAGE, или null, если его нет.
hasFiles
public final boolean hasFiles()
- Возвращает:
- 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.