Swing/DraggableLinkButton のバックアップの現在との差分(No.10)
- 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:
概要
JButton
にTransferHandler
を設定して、ブラウザにリンクをドロップできるようにします。
Screenshot
Advertisement
サンプルコード
#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
のドラッグ&ドロップを実行するために、以下のようなTransferHandler
とTransferable
を設定しています。
このようなURL
のドラッグ&ドロップを実行するために以下のようなTransferHandler
とTransferable
を設定しています。
- 転送するプロパティー
text
DataFlavor
DataFlavor.stringFlavor
- 転送するデータ
参考リンク
- Hyperlinkを、JLabel、JButton、JEditorPaneで表示
- Java Swing「ドラッグ&ドロップ」メモ(Hishidama's Swing-TransferHandler Memo)
- Java Swing「ドラッグ&ドロップ」メモ(Hishidama's Swing-TransferHandler Memo)