从两个特定点创建矩形

7

我正在尝试使用Java中的awt包类创建矩形。我只能单击两个点,程序必须计算宽度和高度,并在这两个确切点之间绘制一个矩形。

下面的内容对我没有用:

package ie.iact.shapes;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;

public class Rect extends Shapes {``

    private Point secondPoint;

    public Rect(Point f, Point s) {
        setFirstPoint(f);
        setSecondPoint(s);

    }

    @Override
    public void draw(Graphics g) {
        int x1 = firstPoint.x;
        int y1 = firstPoint.y;
        int x2 = secondPoint.x;
        int y2 = secondPoint.y;
        int a;
        int b;
        if (x1 < x2) {
            a = x1;
        } else {
            a = x2;
        }
        if (y1 < y2) {
            b = y1;
        } else {
            b = y2;
        }
        int width = secondPoint.x - a;
        int hight = secondPoint.y - b;
        g.drawRect(getFirstPoint().x, getFirstPoint().y, secondPoint.x, secondPoint.y);

    }

    public Point getSecondPoint() {
        return secondPoint;
    }

    public void setSecondPoint(Point secondPoint) {
        this.secondPoint = secondPoint;
    }
}

1
看一下g.drawRect调用。你费尽心思计算左上角、高度和宽度,但却完全忽略了这些值... - MadProgrammer
1
为了更快地获得帮助,请发布一个SSCCE - Andrew Thompson
谢谢大家,但是代码是完美的。我在另一个类中重写了它。 - Sean Connell
2个回答

9

Rectangle类已经能够处理你所有的计算:

Rectangle rect= new Rectangle(point1);
rect.add(point2);

g.fillRect(rect.x, rect.y, rect.width, rect.height);

0

或者您可以使用 setFrameFromDiagonal

Rectangle rect= new Rectangle();
rect.setFrameFromDiagonal(point1, point2);

g.fillRect(rect.x, rect.y, rect.width, rect.height);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接