人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaで、画像をドラッグドロップすると移動できるような機能を実装したいのですが、どのようにしたら実装できるでしょうか?画像を表示するところまでは下記のようにすれば出来たのですが…。

http://www.javadrive.jp/tutorial/jlabel/index6.html

●質問者: rapuntuleru
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Java ドラッグ ドロップ 画像
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mitz
●60ポイント ベストアンサー

こういうことですか?

class SSample6_1 extends JFrame{
 public static void main(String args[]){
 SSample6_1 frame = new SSample6_1("タイトル");
 frame.setVisible(true);
 }
 
 private JLabel label;

 SSample6_1(String title){
 setTitle(title);
 setBounds(100, 100, 300, 250);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 JPanel p = new JPanel();

 ImageIcon icon1 = new ImageIcon("./board.png");
 
 label = new JLabel(icon1);

 // 座標指定
 p.setLayout(null);
 label.setBounds(0, 0, 50, 50);
 
 // リスナーを登録
 MyMouseListener listener = new MyMouseListener();
 label.addMouseListener(listener);
 label.addMouseMotionListener(listener);
 
 p.add(label);

 Container contentPane = getContentPane();
 contentPane.add(p, BorderLayout.CENTER);
 }
 
 private class MyMouseListener extends MouseAdapter{
 private int dx;
 private int dy;

 public void mouseDragged(MouseEvent e) {
 // マウスの座標からラベルの左上の座標を取得する
 int x = e.getXOnScreen() - dx;
 int y = e.getYOnScreen() - dy;
 label.setLocation(x, y);
 }

 public void mousePressed(MouseEvent e) {
 // 押さえたところからラベルの左上の差を取っておく
 dx = e.getXOnScreen() - label.getX();
 dy = e.getYOnScreen() - label.getY();
 }
 }
}
◎質問者からの返答

すばらしい!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ