0

我想设置一个相对于另一个组件的矩形位置,但是偏移了。我尝试了以下方法:

rndRect.setLocation(StartButt.getLocation().translate(buttW, 2));

但是 translate 返回 void,因此它不被接受为参数(需要 a Point)。

有没有办法在不创建辅助变量的情况下在同一条语句上执行此操作?

没什么重要的,只是好奇。

4

1 回答 1

0

不。如果translate需要一个可变变量,该变量已更改但未返回,那么您需要声明一个要传递给的变量,translate然后将其传递给setLocation.

或者,您可以编写自己的方法来获取位置并创建并返回一个点:

private Point translate(Location location, Point origin, int distance) {
    Point result = (Point)origin.clone();
    location.translate(result, distance);
    return result;
}

rndRect.setLocation(translate(StartButt.getLocation(), buttW, 2));

有趣的是,对于使用临时变量来临时保存值是一个好主意,还是创建更少更复杂的语句来避免临时变量是一个好主意,意见存在很大差异。就我个人而言,我发现命名良好的临时变量(和简短的简单方法)使阅读代码变得更加容易,因为在阅读每条语句时你的头脑中掌握的东西更少。代码读起来更像是一个故事,而不是一个谜题。以我的经验,随着程序员在他们的职业生涯中变得更好,他们会创建更多、更简单的类、方法、语句和变量来解决每个问题。

于 2019-12-17T00:13:59.733 回答