e.getX();不准确

时间:2015-09-30 22:07:28

标签: java mouseevent

所以我遇到了一个问题,当我读到鼠标位置并尝试操纵它时,一切都变得地狱!

以下是此次灾难的代码。

public class LoadScreen implements MouseListener{

    int x,y;
    public void begin(Graphics g, JPanel def) {
        def.addMouseListener(this);
        Font font = new Font("Serif", Font.PLAIN, 50);
        g.setFont(font);
        g.drawString("Welcome to FaivaCodex's Live Interaction Game Shell", 30, 200);
        Font font2=new Font("Triplex",Font.PLAIN, 17);
        g.setFont(font2);
        g.drawString("Enjoy making your game, for any more gameshells you would like to be availible send an email to flaivaflaves@gmail.com ",  30, 230);
        g.fillRect(x-5,y-5,x+10,y+10);

    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        x=arg0.getX();
        y=arg0.getY();
    }

    @Override
    public void mouseClicked(MouseEvent arg0) {

    }

    @Override
    public void mouseExited(MouseEvent arg0) {

    }

    @Override
    public void mousePressed(MouseEvent arg0) {

    }

    @Override
    public void mouseReleased(MouseEvent arg0) {

    }

}

还有一张它产生的图像,但我还无法发布图像。我想要的是鼠标所在的10 * 10像素盒子,但我能告诉你的是......这个矩形很大。

2 个答案:

答案 0 :(得分:0)

g.fillRect(x-5,y-5,x+10,y+10);

fillRect需要x,y,width and height as parameter,因此您需要制作

g.fillRect(x-5,y-5,10,10);

答案 1 :(得分:0)

fillRect(...)的参数是坐标xy以及尺寸widthheight,这意味着如果x = 100y = 100您的代码将生成一个110x110的矩形,从x 100,y 100开始。

如果要从鼠标指针开始创建10x10矩形,请使用:

g.fillRect(x,y,10,10);