Swing/SystemClipboard のバックアップ(No.10)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SystemClipboard へ行く。
- 1 (2012-12-27 (木) 07:41:01)
- 2 (2014-10-11 (土) 16:46:15)
- 3 (2014-12-31 (水) 01:40:40)
- 4 (2015-03-03 (火) 14:14:44)
- 5 (2015-03-29 (日) 15:22:38)
- 6 (2017-02-14 (火) 14:19:48)
- 7 (2017-10-22 (日) 18:43:14)
- 8 (2018-06-28 (木) 13:26:32)
- 9 (2019-04-19 (金) 13:43:27)
- 10 (2020-06-14 (日) 17:06:39)
- 11 (2021-11-30 (火) 07:17:01)
- category: swing folder: SystemClipboard title: Clipboardから文字列や画像を取得する tags: [ServiceManager, Clipboard, Transferable, JLabel] author: aterai pubdate: 2010-09-27T15:53:12+09:00 description: Clipboardから文字列や画像データを取得し、JLabelに表示します。 image:
概要
Clipboard
から文字列や画像データを取得し、JLabel
に表示します。
Screenshot
Advertisement
サンプルコード
private ClipboardService cs = null;
public JComponent makeUI() {
try {
cs = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService");
} catch (UnavailableServiceException e) {
cs = null;
}
JPanel p = new JPanel(new BorderLayout());
p.add(new JScrollPane(label));
p.add(new JButton(new AbstractAction("get Clipboard DataFlavor") {
@Override public void actionPerformed(ActionEvent e) {
try {
Transferable t = (cs == null)
? Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null)
: cs.getContents();
if (t == null) {
Toolkit.getDefaultToolkit().beep();
return;
}
String str = "";
ImageIcon image = null;
if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
image = new ImageIcon((Image) t.getTransferData(DataFlavor.imageFlavor));
} else if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
str = (String) t.getTransferData(DataFlavor.stringFlavor);
}
label.setText(str);
label.setIcon(image);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}), BorderLayout.SOUTH);
return p;
}
View in GitHub: Java, Kotlin解説
上記のサンプルをWeb Start
で実行した場合は、Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null)
ではなく、ClipboardService#getContents()
を使って、Transferable
を取得するようになっています。
Transferable
から文字列を取得Transferable#getTransferData(DataFlavor.stringFlavor)
Transferable
から画像を取得Transferable#getTransferData(DataFlavor.imageFlavor)