• 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

概要

JButtonTransferHandlerを設定して、ブラウザにリンクをドロップできるようにします。

サンプルコード

#spandel
final String href = "http://ateraimemo.com/";
#spanend
#spandel
//final DataFlavor uriflavor = new DataFlavor(String.class, "text/uri-list");
#spanend
#spandel
final DataFlavor uriflavor = DataFlavor.stringFlavor;
#spanend
#spanadd
String href = "https://ateraimemo.com/";
#spanend
#spanadd
// DataFlavor uriflavor = new DataFlavor(String.class, "text/uri-list");
#spanend
#spanadd
DataFlavor uriflavor = DataFlavor.stringFlavor;
#spanend
JButton b = new JButton(href);
#spanadd
b.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
#spanend
b.setTransferHandler(new TransferHandler("text") {
  @Override public boolean canImport(JComponent c, DataFlavor[] flavors) {
    return flavors.length > 0 && flavors[0].equals(uriflavor);
  }
#spanadd

#spanend
  @Override public Transferable createTransferable(JComponent c) {
    return new Transferable() {
      @Override public Object getTransferData(DataFlavor flavor) {
        //System.out.println(flavor.getMimeType());
        // System.out.println(flavor.getMimeType());
        return href;
      }
#spanadd

#spanend
      @Override public DataFlavor[] getTransferDataFlavors() {
        return new DataFlavor[] { uriflavor };
        return new DataFlavor[] {uriflavor};
      }
#spanadd

#spanend
      @Override public boolean isDataFlavorSupported(DataFlavor flavor) {
        return flavor.equals(uriflavor);
      }
    };
  }
});
b.addMouseListener(new MouseAdapter() {
  @Override public void mousePressed(MouseEvent e) {
    JButton button = (JButton) e.getSource();
    TransferHandler handler = button.getTransferHandler();
    handler.exportAsDrag(button, e, TransferHandler.COPY);
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、URL文字列を設定したJButtonをマウスでドラッグし、ブラウザにドロップすると、そのサイトに移動することができます。 上記のサンプルでは、URL文字列を設定したJButtonをマウスでドラッグしてウェブブラウザなどにドロップすると、そのサイトに移動できます。 このようなURLのドラッグ&ドロップを実行するために、以下のようなTransferHandlerTransferableを設定しています。 このようなURLのドラッグ&ドロップを実行するために以下のようなTransferHandlerTransferableを設定しています。

参考リンク

コメント