Java I';我不能让这个程序向左和向右画图形;向上的它只会向右和向下移动
我在向左和向上绘制矩形时遇到问题。它们从右到下都画得很完美。 如能给予答复,将不胜感激Java I';我不能让这个程序向左和向右画图形;向上的它只会向右和向下移动,java,Java,我在向左和向上绘制矩形时遇到问题。它们从右到下都画得很完美。 如能给予答复,将不胜感激 import acm.program.*; import acm.graphics.*; import java.awt.event.*; public class Ch10_Ex04_Mouse_Dragged_Rectangle extends GraphicsProgram { public void init() { addMouseListeners(); }
import acm.program.*;
import acm.graphics.*;
import java.awt.event.*;
public class Ch10_Ex04_Mouse_Dragged_Rectangle extends GraphicsProgram
{
public void init()
{
addMouseListeners();
}
public void mousePressed (MouseEvent e)
{
X = e.getX();
Y = e.getY();
rect = new GRect (e.getX(), e.getY(), 0, 0);
add (rect);
}
public void mouseDragged (MouseEvent e)
{
// if (e.getX() < X)
// rect.setBounds(X, Y, -e.getX() + X, e.getY() - Y);
rect.setBounds(X, Y, e.getX()-X, e.getY()-Y);
}
int X, Y;
private GRect rect;
}
导入acm.program.*;
导入acm图形。*;
导入java.awt.event.*;
公共类Ch10\u Ex04\u鼠标\u拖动\u矩形扩展图形程序
{
公共void init()
{
addMouseListeners();
}
公共无效鼠标按下(MouseEvent e)
{
X=e.getX();
Y=e.getY();
rect=newgrect(e.getX(),e.getY(),0,0);
添加(rect);
}
公共无效鼠标标记(鼠标事件e)
{
//if(如getX()
我在这里做了一些假设,但我认为这是您正在寻找的mouseDragged函数(我没有验证语法错误)。这将在所有四个可能的拖动方向(1)右/下,(2)右/上,(3)左/下,(4)左/上)绘制矩形:
public void mouseDragged(MouseEvent e)
{
//确定x值和长度
int xPos=X;
intxlen=Math.abs(X-e.getX());
if(如getX()
这不是一个程序。这只是一节课。也就是说,您需要查找rect.setBounds的文档。我很确定,给它负宽度和/或高度实际上是不允许的,但你必须查一下,告诉我是不是这样,因为如果你不知道,你还没有查过文档,您可能应该推迟询问堆栈溢出问题,直到您确定正确调用了所有函数=)我猜这也不适用于(1)向左和向下拖动(2)向右和向上拖动。发布了一个考虑了所有4个拖动方向的答案。太好了,很高兴它对你有用。诀窍是确定最左边的X值和最上面的Y值。之后,只需插入长度。这段代码可以简化,但为了可读性,还是这样写的。
public void mouseDragged (MouseEvent e)
{
// Determine x-val and length
int xPos = X;
int xLen = Math.abs(X - e.getX());
if (e.getX() < X) {
xPos = e.getX();
}
// Determine y-val and length
int yPos = Y;
int yLen = Math.abs(Y - e.getY());
if (e.getY() < Y) {
yPos = e.getY();
}
// Set bounds on rectangle
rect.setBounds(xPos, yPos, xLen, yLen);
}