我有一个我希望按以下方式缩放的形状:
这就是我解决这个问题的方法:(我不是将我方法的实现作为唯一的想法,而不是实际的实现,是这个问题的主题):
public void addScaling(Shape shape)
{
shape.setOnMouseEntered(e ->
{
(shape.getScene()).setOnKeyPressed(e2 ->
shape.setOnScroll(e3 -> scalingMethod())
}
shape.setOnMouseExited(e ->
{
(shape.getScene()).setOnKeyPressed(null);
shape.setOnScroll(null);
}
}
然而,我对这段代码并不满意 - 它看起来很糟糕。
有没有更好的方法来解决这个问题?
答案 0 :(得分:2)
AFAIK,除非鼠标悬停在节点上,否则不会在节点上触发滚动事件。所以你需要的只是
shape.setOnScroll(e -> {
if (e.isControlDown()) {
scalingMethod();
}
});
如果您确实需要检查鼠标是否在形状上,请执行
shape.setOnScroll(e -> {
if (e.isControlDown() && shape.isHover()) {
scalingMethod();
}
});