Swing/ClipboardService のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ClipboardService へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:ClipboardServiceでシステム全体の共有クリップボードにアクセスする #navi(../) RIGHT:Posted by &author(aterai); at 2012-04-30 *ClipboardServiceでシステム全体の共有クリップボードにアクセスする [#keb95371] ClipboardServiceを使って Java Web Start で動作中のアプリケーションからシステム全体の共有クリップボードにアクセスします。 -&jnlp; -&jar; -&zip; //#screenshot #ref(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を取得し、コピー、ペースト、カットなどでセキュリティ警告ダイアログを表示して、ユーザーにアクセス許可を求めます。 - Cutの例 -- アプリケーションのクリップボード --- セキュリティ警告でOK、取り消しのどちらを選択しても、JTextAreaの選択文字列はCutされ、アプリケーションのクリップボードは上書きされる -- システム全体の共有クリップボード -- セキュリティ警告で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