我想设置一个相对于另一个组件的矩形位置,但是偏移了。我尝试了以下方法:
rndRect.setLocation(StartButt.getLocation().translate(buttW, 2));
但是 translate 返回 void,因此它不被接受为参数(需要 a Point
)。
有没有办法在不创建辅助变量的情况下在同一条语句上执行此操作?
没什么重要的,只是好奇。
我想设置一个相对于另一个组件的矩形位置,但是偏移了。我尝试了以下方法:
rndRect.setLocation(StartButt.getLocation().translate(buttW, 2));
但是 translate 返回 void,因此它不被接受为参数(需要 a Point
)。
有没有办法在不创建辅助变量的情况下在同一条语句上执行此操作?
没什么重要的,只是好奇。
不。如果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));
有趣的是,对于使用临时变量来临时保存值是一个好主意,还是创建更少更复杂的语句来避免临时变量是一个好主意,意见存在很大差异。就我个人而言,我发现命名良好的临时变量(和简短的简单方法)使阅读代码变得更加容易,因为在阅读每条语句时你的头脑中掌握的东西更少。代码读起来更像是一个故事,而不是一个谜题。以我的经验,随着程序员在他们的职业生涯中变得更好,他们会创建更多、更简单的类、方法、语句和变量来解决每个问题。