|
|
salut,
je cherche a determiner la position du curseur sur une image une fois que je click sur une position le curseur reste tjr a sa place et les coordonées afichés ne se change pas
voici mon programme
public class Map extends JFrame{
private static final long serialVersionUID = 1L;
protected MapPane mapPane;
protected BufferedImage image;
protected JSlider curseur = new JSlider(JSlider.VERTICAL, 1, 3, 1);
static int xpos;
static int ypos;
boolean mouseEntered;
boolean rect1Clicked;
public void mouseClicked (MouseEvent me)
{
xpos = me.getX();
ypos = me.getY();
repaint();
}
public void mousePressed (MouseEvent me) {}
public void mouseReleased (MouseEvent me) {}
public void mouseEntered (MouseEvent me) {
mouseEntered = true;
repaint();
}
public void mouseExited (MouseEvent me) {
mouseEntered = false;
repaint();
}
public Map() throws Exception {
image = ImageIO.read(new File("hotel.gif"));
mapPane = new MapPane(image);
setLayout(new BorderLayout());
add(new JScrollPane(mapPane), BorderLayout.CENTER);
}
public static void main(String ...args) {
try {
Map map = new Map();
map.setSize(400, 400);
map.setTitle("Test");
map.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
map.setVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
private static class MapPane extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage image;
public MapPane(BufferedImage image) {
super();
setImage(image);
}
private void ResetSize() {
int width = 0;
int height = 0;
if (image != null) {
width += image.getWidth() ;
height += image.getHeight();
}
Dimension size = new Dimension(width, height);
setSize(size);
setMinimumSize(size);
setPreferredSize(size);
}
public void setImage(BufferedImage image) {
this.image = image;
ResetSize();
repaint();
}
public BufferedImage getImage() {
return image;
}
@Override
public void paint(Graphics graphics) {
super.paint(graphics);
Graphics2D g2d = (Graphics2D) graphics;
if (image != null) {
Insets insets = getInsets();
Dimension size = getSize();
int panelWidth = size.width - (insets.left + insets.right);
int panelHeight = size.height - (insets.top + insets.bottom);
int scaledImageWidth = image.getWidth();
int scaledImageHeight = image.getHeight();
int x = (panelWidth - scaledImageWidth) / 2;
int y = (panelHeight - scaledImageHeight) / 2;
g2d.drawImage(image, x, y, scaledImageWidth, scaledImageHeight, null);
g2d.setColor(Color.red);
g2d.drawString("("+xpos+","+ypos+")",xpos,ypos);
g2d.drawRect(xpos, ypos, 10, 10);
}
}
}
}
merci
|