- ベストアンサー
ファイルをドロップした場所を知る方法
- Containerに8個のボタンがaddされている状態で、このウィンドウにファイルをドロップし、ボタン上でドロップされたら、それがどのボタンの上でドロップされたのかを知るメソッドを作っています。
- ドロップされた座標を取得して、座標の位置でどのボタンか判断する方法を考えましたが、ContainerにMouseListenerを付けていたため、ボタン上でのドロップを受け付けませんでした。
- ボタンにもMouseListenerを付けましたが、ボタン内の座標を取得することができず、使い物になりませんでした。座標を使わずにドロップされたボタンを判断する方法はありますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
座標が云々とかそんなに複雑に考えなくても簡単にできますよ。 シンプルなサンプルを作ってみました。 ボタン上にドロップするとボタンのテキストが出力されます。 import java.awt.*; import java.awt.dnd.*; import java.awt.event.*; import javax.swing.*; public class DndTest extends JFrame implements DropTargetListener { public static void main(String[] args){ new DndTest(); } public DndTest(){ super("Drag&Drop Test Application"); this.initComponents(); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); } private void initComponents(){ JPanel p = new JPanel(); p.setLayout(new GridLayout(3,3)); for(int i = 1; i <= 9; i++){ JButton b = new JButton("Button " + i); DropTarget t = new DropTarget(b, this); p.add(b); } this.setContentPane(p); this.setSize(400, 400); } public void drop(DropTargetDropEvent evt){ JButton b = (JButton)(evt.getDropTargetContext().getComponent()); System.out.println(b.getText()); } public void dragEnter(DropTargetDragEvent evt){} public void dragExit(DropTargetEvent evt){} public void dragOver(DropTargetDragEvent evt){} public void dropActionChanged(DropTargetDragEvent evt){} }
お礼
返事が凄く遅れて申し訳ないです。 載せて頂いたソースを参考に作成したところ、何とか作成することができました! 本当にありがとうございます!