Java.use(better,Jython)《6.1》TransferHandler: DnD

《前の記事|記事一覧|次の記事》
Java.use(better, Jython)


気軽に Swing:FIFA ワールドカップへの道《6》

TransferHandler: DnD



今までの自分を捨て去れば
なりたい自分になれる
Laozi - Wikipedia

《関連記事》

-

■ Swing:TransferHandler

 ラベルは、情報を提示するのが目的で、ボタンのように処理を起動しません。しかし、ドラッグ&ドロップを活用すると、処理を起動する部品としても利用できます。また、その対象ごとに異なる処理を割り当てることで、柔軟な対処が可能になります。
【例題1a】ラベルをドラッグ&ドロップして、テキスト領域に表示したい。


 ラベルの上にマウスカーソルを移動すると、ツールチップが現われます。


 1)ラベルの上にマウスカーソルを移動して、マウスボタンを押したまま、2)テキスト領域までドラッグ&ドロップすると、3)ラベルと同じ文字列が表示されます。これを実現したのが、次のコードです。

def ex_DnD_JLabel():
    def mousePressed(e):
        comp = e.source
        comp.transferHandler.exportAsDrag(
            comp,    # holding the data to be transferred
            e,       # triggered the transfer
            TransferHandler.COPY, 
            )
    iconView = JPanel(layout=GridLayout(-1, 1))
    for e in "Japan", "Canada", "Virgin Islands":
        iconView.add(JLabel(
            icon=ImageIcon("Flags/%s.gif"%e), 
            text=e, 
            toolTipText=e, 
            mousePressed=mousePressed, 
            transferHandler=TransferHandler("text"),    
                                        # Here goes! (@.@)
            ))
    ...


Last updated♪2009/07/28