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をブラウザにドロップ #navi(../) RIGHT:Posted by [[terai]] at 2007-12-03 *TransferHandlerでHyperlinkをブラウザにドロップ [#w00349ec] JButtonにTransferHandlerを設定して、ブラウザにリンクをドロップできるようにします。 --- category: swing folder: DraggableLinkButton title: TransferHandlerでHyperlinkをブラウザにドロップ tags: [DragAndDrop, TransferHandler, DataFlavor, Html, JButton] author: aterai pubdate: 2007-12-03T14:41:28+09:00 description: JButtonにTransferHandlerを設定して、ブラウザにリンクをドロップできるようにします。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTLyb41hvI/AAAAAAAAAYI/uoSzZ3thyWk/s800/DraggableLinkButton.png --- * 概要 [#summary] `JButton`に`TransferHandler`を設定して、ブラウザにリンクをドロップできるようにします。 -&jnlp; -&jar; -&zip; #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTLyb41hvI/AAAAAAAAAYI/uoSzZ3thyWk/s800/DraggableLinkButton.png) #screenshot **サンプルコード [#udf5497a] #code{{ final String href = "http://terai.xrea.jp/"; //final DataFlavor uriflavor = new DataFlavor(String.class, "text/uri-list"); final DataFlavor uriflavor = DataFlavor.stringFlavor; * サンプルコード [#sourcecode] #code(link){{ String href = "https://ateraimemo.com/"; // DataFlavor uriflavor = new DataFlavor(String.class, "text/uri-list"); DataFlavor uriflavor = DataFlavor.stringFlavor; JButton b = new JButton(href); b.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); b.setTransferHandler(new TransferHandler("text") { public boolean canImport(JComponent c, DataFlavor[] flavors) { return (flavors.length>0 && flavors[0].equals(uriflavor)); @Override public boolean canImport(JComponent c, DataFlavor[] flavors) { return flavors.length > 0 && flavors[0].equals(uriflavor); } public Transferable createTransferable(JComponent c) { @Override public Transferable createTransferable(JComponent c) { return new Transferable() { public Object getTransferData(DataFlavor flavor) { //System.out.println(flavor.getMimeType()); @Override public Object getTransferData(DataFlavor flavor) { // System.out.println(flavor.getMimeType()); return href; } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { uriflavor }; @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] {uriflavor}; } public boolean isDataFlavorSupported(DataFlavor flavor) { @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(uriflavor); } }; } }); b.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { JButton button = (JButton)e.getSource(); @Override public void mousePressed(MouseEvent e) { JButton button = (JButton) e.getSource(); TransferHandler handler = button.getTransferHandler(); handler.exportAsDrag(button, e, TransferHandler.COPY); } }); }} **解説 [#nd12fea7] 上記のサンプルでは、JButtonをマウスでブラウザにドラッグ&ドロップすると、そのサイトに移動するようになっています。ここでは、JButtonを使用していますが、JLabelなどの他のコンポーネントでも同様の設定が可能です。 * 解説 [#explanation] 上記のサンプルでは、`URL`文字列を設定した`JButton`をマウスでドラッグしてウェブブラウザなどにドロップすると、そのサイトに移動できます。 以下のようなTransferHandlerとTransferableを設定しています。 -転送するプロパティー --"text" -DataFlavor --DataFlavor.stringFlavor -転送するデータ --文字列("http://terai.xrea.jp/") このような`URL`のドラッグ&ドロップを実行するために以下のような`TransferHandler`と`Transferable`を設定しています。 **参考リンク [#mab3f8d6] -[[Hyperlinkを、JLabel、JButton、JEditorPaneで表示>http://terai.xrea.jp/Swing/HyperlinkLabel.html]] - 転送するプロパティー -- `text` - `DataFlavor` -- `DataFlavor.stringFlavor` - 転送するデータ -- 文字列: `https://ateraimemo.com/` **コメント [#a4ce95d5] - Operaには、ドロップできないようです(MIMEタイプを設定しないとダメ?)。 -- [[terai]] &new{2007-12-03 (月) 14:41:28}; * 参考リンク [#reference] - [[Hyperlinkを、JLabel、JButton、JEditorPaneで表示>Swing/HyperlinkLabel]] - [https://www.ne.jp/asahi/hishidama/home/tech/java/swing/TransferHandler.html Java Swing「ドラッグ&ドロップ」メモ(Hishidama's Swing-TransferHandler Memo)] * コメント [#comment] #comment - `Opera`には、ドロップできないようです(`MIME`タイプを設定しないとダメ?)。 -- &user(aterai); &new{2007-12-03 (月) 14:41:28}; #comment