Spec-Zone.ru › OpenJavaFX 8
javafx.scene.input

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

      Возвращает:

      Непустой неизменяемый набор типов содержимого.

    • setContent

      public final boolean setContent(Map<DataFormat,Object> content)
      Добавляет содержимое в буфер обмена. Этот вызов всегда приводит к очистке всех предыдущих данных из буфера обмена и замене их на указанное содержимое в предоставленном отображении ClipboardContent.

      Параметры:

      content - Содержимое для добавления в буфер обмена. Если null, буфер обмена просто очищается, и новое содержимое не добавляется.

      Возвращает:

      True, если успешно, false, если содержимое не добавлено.

      Выбрасывает:

      NullPointerException - если передан null для любой ссылки на данные.

    • getContent

      public final Object getContent(DataFormat dataFormat)
      Возвращает содержимое, хранящееся в данном буфере обмена заданного типа, или null, если содержимого с этим типом нет.

      Возвращает:

      Содержимое, связанное с этим типом, или null, если его нет

    • hasContent

      public final boolean hasContent(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