Swing/DraggableLinkButton のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DraggableLinkButton へ行く。
- 1 (2007-12-03 (月) 14:41:28)
- 2 (2009-05-18 (月) 17:18:33)
- 3 (2013-01-27 (日) 19:48:01)
- 4 (2013-01-27 (日) 22:14:21)
- 5 (2013-01-29 (火) 15:30:53)
- 6 (2013-10-11 (金) 12:49:15)
- 7 (2014-11-08 (土) 01:41:12)
- 8 (2015-02-17 (火) 22:31:15)
- 9 (2016-11-11 (金) 14:43:45)
- 10 (2017-10-27 (金) 16:26:13)
- 11 (2017-11-21 (火) 16:07:06)
- 12 (2018-09-13 (木) 15:34:55)
- 13 (2019-04-19 (金) 13:43:27)
- 14 (2020-09-16 (水) 23:42:31)
- 15 (2022-03-24 (木) 15:59:24)
- 16 (2022-08-12 (金) 00:53:41)
- 17 (2023-08-25 (金) 19:08:59)
TITLE:TransferHandlerでHyperlinkをブラウザにドロップ
Posted by terai at 2007-12-03
TransferHandlerでHyperlinkをブラウザにドロップ
JButtonにTransferHandlerを設定して、ブラウザにリンクをドロップできるようにします。
- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
final String href = "http://terai.xrea.jp/";
//final DataFlavor uriflavor = new DataFlavor(String.class, "text/uri-list");
final DataFlavor uriflavor = DataFlavor.stringFlavor;
JButton b = new JButton(href);
b.setTransferHandler(new TransferHandler("text") {
public boolean canImport(JComponent c, DataFlavor[] flavors) {
return (flavors.length>0 && flavors[0].equals(uriflavor));
}
public Transferable createTransferable(JComponent c) {
return new Transferable() {
public Object getTransferData(DataFlavor flavor) {
//System.out.println(flavor.getMimeType());
return href;
}
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { uriflavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(uriflavor);
}
};
}
});
b.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JButton button = (JButton)e.getSource();
TransferHandler handler = button.getTransferHandler();
handler.exportAsDrag(button, e, TransferHandler.COPY);
}
});
解説
上記のサンプルでは、JButtonをマウスでブラウザにドラッグ&ドロップすると、そのサイトに移動するようになっています。ここでは、JButtonを使用していますが、JLabelなどの他のコンポーネントでも同様の設定が可能です。
以下のようなTransferHandlerとTransferableを設定しています。
- 転送するプロパティー
- "text"
- DataFlavor
- DataFlavor.stringFlavor
- 転送するデータ
- 文字列("http://terai.xrea.jp/")
参考リンク
コメント
- Operaには、ドロップできないようです(MIMEタイプを設定しないとダメ?)。 -- terai