Swing/ClipboardService のバックアップソース(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/ClipboardService へ行く。
--- title: ClipboardServiceでシステム全体の共有クリップボードにアクセスする tags: [ServiceManager, ClipboardService, JTextComponent] author: aterai pubdate: 2012-04-30T10:43:03+09:00 description: ClipboardServiceを使ってJava Web Startで動作中のアプリケーションからシステム全体の共有クリップボードにアクセスします。 --- * 概要 [#keb95371] `ClipboardService`を使って`Java Web Start`で動作中のアプリケーションからシステム全体の共有クリップボードにアクセスします。 #download(https://lh5.googleusercontent.com/--_lXbzG-H7g/T53noZrOnHI/AAAAAAAABME/FyY8MKdHSg0/s800/ClipboardService.png) * サンプルコード [#w95c9c42] #code(link){{ private ClipboardService cs; }} #code{{ try{ cs = (ClipboardService)ServiceManager.lookup("javax.jnlp.ClipboardService"); }catch(Throwable t) { cs = null; } JTextArea textArea = new JTextArea() { @Override public void copy() { if(cs != null) { cs.setContents(new StringSelection(getSelectedText())); } super.copy(); } @Override public void cut() { if(cs != null) { cs.setContents(new StringSelection(getSelectedText())); } super.cut(); } @Override public void paste() { if(cs != null) { Transferable tr = cs.getContents(); if(tr.isDataFlavorSupported(DataFlavor.stringFlavor)) { try{ getTransferHandler().importData(this, tr); }catch(Exception e) { e.printStackTrace(); } } }else{ super.paste(); } } }; }} * 解説 [#z1e6e45a] `Java Web Start`から起動された制限付きのランタイム内で動作中するアプリケーションからは、システム全体の共有クリップボードにアクセスすることができないので、`ServiceManager`から`ClipboardService`を取得し、コピー、ペースト、カットなどでセキュリティ警告ダイアログを表示して、ユーザーにアクセス許可を求めます。 - カットの例 -- アプリケーションのクリップボード --- セキュリティ警告でOK、取り消しのどちらを選択しても、`JTextArea`の選択文字列はカットされ、アプリケーションのクリップボードは上書きされる -- システム全体の共有クリップボード -- セキュリティ警告でOKを選択するとシステム全体の共有クリップボードは上書きされ、取り消しを選択すると上書きされない * 参考リンク [#n9de5723] - [http://docs.oracle.com/javase/jp/6/technotes/guides/javaws/developersguide/examples.html#ClipboardService ClipboardService サービスの使い方 - JNLP API の使用例] - [http://docs.oracle.com/javase/jp/6/technotes/guides/javaws/developersguide/contents.html Java Web Start 開発者ガイド] * コメント [#s3bd5228] #comment #comment