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