Clipboardから文字列や画像を取得する
Total: 6071
, Today: 3
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
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 = Objects.isNull(cs)
? 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
で実行:ClipboardService#getContents()
を使ってTransferable
を取得
- ローカル環境で実行:
Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null)
を使ってTransferable
を取得
Transferable
から文字列を取得Transferable#getTransferData(DataFlavor.stringFlavor)
Transferable
から画像を取得Transferable#getTransferData(DataFlavor.imageFlavor)