こういうことですか?
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(); } } }
すばらしい!