我该如何编码应在MouseListener的第二次单击事件后绘制一个矩形的applet,该坐标由单击的位置指定,x代表第一次单击,y代表第二次单击? >
答案 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,但这仅是由于功能需求而已...我的问题是如何在其中编写一种不需要这些参数的方式,或者至少是由坐标指定宽度和高度参数的方式。