Передача данных в технологии Java реализована посредством пакета java.awt.datatransfer. Ниже перечислены некоторые особенности классов в интерфейсов из данного пакета.
- Объекты, переносимые посредством буфера обмена, должны реализовывать интерфейс Transferable.
- Класс Clipboard описывает буфер обмена. Системный буфер обмена является конкретным примером реализации класса Clipboard.
- Класс DataFlavor описывает типы документов, которые могут быть помещены в буфер обмена.
- Класс StringSelection реализует интерфейс Transferable и используется для передачи строк.
Для получения уведомления о перезаписи содержимого буфера класс должен реализовывать интерфейс ClipboardOwner. Управление правом владения интерфейсом позволяет выполнять «отложенное форматирование» сложных данных.
Если программа передает простые данные(например, строку), то она просто обновляет содержимое буфера обмена и переходит к выполнению следующих действий.
Если же программа собирается вставить в буфер обмена сложные данные, которые могут быть представлены различными типами документов, то не рекомендуется обрабатывать все эти типы документов, так как многие из них могут вообще не понадобится. Однако нужно сохранить данные в буфере таким образом, чтобы впоследствии можно было обрабатывать типы документов по мере необходимости. Поэтому владелец буфера обмена с помощью метода lostOwnership() должен быть своевременно уведомлен об изменении содержимого. Изменение содержимого буфера означает, что информация о сложных данных больше не требуется.