2
私は私の画像を押してドラッグすることですが、私は、画像の中央を押したときに、私はドラッグ画像
これは何をドラッグしていたときただし、カーソルが常に画像の上左上に移動します私は
をドラッグしていたときにカーソルが常に画像の上左上に移動する画像の中心にを押した写真
と意味します
画像をドラッグしているときにカーソルが画像の中心に来るようにするにはどうすればよいですか?
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class ChessGUI extends JPanel implements MouseListener, MouseMotionListener {
final int rows = 8;
final int cols = 8;
int x = 0;
int y = 0;
int carx= 0;
int cary =0;
ImageIcon car;
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
x = 50*col;
y = 50*row;
if ((row % 2) == (col % 2))
g.setColor(Color.white);
else
g.setColor(Color.black);
g.fillRect(x,y,50,50);
}
}
car = new ImageIcon("resources/image/48/br.png");
car.paintIcon(this, g, carx, cary);
}
public ChessGUI() {
addMouseListener(this);
addMouseMotionListener(this);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Chess");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setSize(420,450);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
frame.add(new ChessGUI());
}
@Override
public void mouseDragged(MouseEvent evt) {
carx = evt.getX();
cary = evt.getY();
repaint();
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
'evt.getX();'と 'evt.getY();'を数ピクセルだけ減らすのは簡単ではないでしょうか?値がマウスの右側を返すように見えます。代わりに 'carx = evt.getX() - SOME_CONSTANT; 'を設定してみてください マウスのサイズはOSなどによって変わる可能性があります。 – Draken
私はあなたのマウスが左上隅にジャンプするのではないと思います。画像の左上隅を指定することで、マウスの位置に画像が表示されます。あなたの画像の位置は左上隅の座標を指定することによって決定され、その位置はマウスの位置です。 – Salivan