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;' 虽然要小心,鼠标的大小可能会根据操作系统等而改变。 – Draken
我认为这不是你的鼠标跳到左上角,而是你只需图像通过指定图像的左上角出现在您的鼠标所在的位置。我的意思是你的图像位置是通过指定它的左上角坐标确定的,这就是你的鼠标的位置。 – Salivan