如何编写绘制特定对象(在本例中为矩形)的代码,用鼠标单击指定坐标?

时间:2019-04-24 21:42:25

标签: java graphics

我该如何编码应在MouseListener的第二次单击事件后绘制一个矩形的applet,该坐标由单击的位置指定,x代表第一次单击,y代表第二次单击? >

3 个答案:

答案 0 :(得分:0)

您可以尝试以下类似方法,从第一个点到第二个点绘制一个矩形。

boolean first = true;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();
    int x, y, width, height;

    if (first) {
        x = e.getX();
        y = e.getY();
        first = false;
     } if (!first) {
        width = Math.abs(e.getX() - x);
        height = Math.abs(e.getY() - y);
        first = true;
        g.drawRect(x, y, width, height);
    }

}

答案 1 :(得分:0)

这是完整代码。

public class PravougaonikApp extends Applet implements MouseListener{
public PravougaonikApp() {
    addMouseListener(this);

    setSize(300,300);
    setLayout(null);
    setVisible(true);
}

boolean first = true;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();
    int x=0, y=0, width=0, height=0;


        if (first) {
        x = e.getX();

     } if (!first) {

        y = e.getY();
        width = Math.abs(e.getX() - x);
        height = Math.abs(e.getY() + y);
        first = true;
        g.drawRect(x, y, width, height);
     }
     first = false;

}


public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {

}
public void mouseReleased(MouseEvent arg0) {

}

答案 2 :(得分:-1)

我在想这样的事情: 公共PravougaonikApp(){         addMouseListener(this);

    setSize(300,300);
    setLayout(null);
    setVisible(true);
}
int i=0;
int x,y;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();

    if(i%2==0) {
    x=e.getX();
    i++;
    }
    if(i%2==1) {
    y=e.getY();
    i--;
    g.drawRect(x, y, 100, 50);
    }

}

第一次单击时它会保持绘制矩形,是的,我知道我将width和height的值指定为100和50,但这仅是由于功能需求而已...我的问题是如何在其中编写一种不需要这些参数的方式,或者至少是由坐标指定宽度和高度参数的方式。