[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00370] JTree のノード間のドラッグ&ドロップ
ひろと言います
JTree で構築したツリーモデルのノード間における
ドラッグ&ドロップを実装したいとコードを書いているのですが、
イマイチ掴みきれていないので教えてください。
まず、JTree を extends したクラスには、このようにリスナーを implements し
ドラッグソースの設定はコンストラクタでこのように設定しています。
/**
* ベースツリー
*/
public class YMTree extends JTree implements DropTargetListener,
DragSourceListener, DragGestureListener {
private DefaultTreeModel m_TreeModel;
private boolean m_DragDrop;
/**
* デフォルトコンストラクタ
*/
YMTree() {
m_DragDrop = false;
setEditable(true);
DragSource dragsource = DragSource.getDefaultDragSource();
dragsource.createDefaultDragGestureRecognizer(this,
DnDConstants.ACTION_COPY_OR_MOVE, this);
this.addMouseMotionListener(new TreeNodeDragDropListener());
}
・・・以下略・・・
さらに、コンストラクタではマウスのモーションリスナーも設定しています。
this.addMouseMotionListener(new TreeNodeDragDropListener());
これでドラッグ状態であれば座標値に応じてフォーカスを変更しようとするためです。
class TreeNodeDragDropListener implements MouseMotionListener {
public void mouseDragged(MouseEvent e) {
System.out.println("TreeNodeDragDropListener.mouseDragged()");
}
public void mouseMoved(MouseEvent e) {
System.out.println("TreeNodeDragDropListener.mouseMoved()");
if(m_DragDrop == true) {
// ドラッグドロップ状態の時には座標に近いノードにフォーカスを当てる
TreePath path = getClosestPathForLocation(e.getX(),
e.getY());
setSelectionPath(path);
System.out.println("x = " + e.getX() + " y = " + e.getY());
}
}
}
このようにやってみたのですが、
実行してみたところ
/**
* ドラッグ開始検出ハンドラ( DragGestureListener )
*/
public void dragGestureRecognized(DragGestureEvent event) {
System.out.println("YMTree.dragGestureRecognized()");
TreePath TP = this.getSelectionPath();
YMTreeNode parentNode = (YMTreeNode)TP.getLastPathComponent();
Transferable transferable = new
YMTreeNodeListTransferable(parentNode);
event.startDrag(null, transferable, this);
m_DragDrop = true;
}
このイベントは来るものの、
dragOver など他のメゾッドが走らないために、
ドラッグ&ドロップ状態が実行されません。
その間、MouseMotionListener も走らないですし・・・
お解りの方が居られれば教えてください。
それでは
_______________________________________________________
------------------------------------------------------------------------
◆ダイエットの味方カプサイシン、何のことだか説明できる?
http://www.infoseek.co.jp/GHome?pg=gn_top.html&svx=971122