如何将默认按钮区域设为形状?

时间:2016-02-08 13:36:30

标签: java javafx

我正在努力应对我需要.getShape()按钮的交叉点。 但是,因为API陈述

  

当为null时,Region将呈现为圆角矩形。

这意味着默认情况下按钮没有形状设置。 我不想在按钮上.setShape()但是要检查我的交叉点,我需要{@ 1}}按钮返回null。

.getShape()返回null时,有没有办法获取按钮节点的默认形状?

我有2个.getShape()按钮和圆圈(有点气泡)

.observableArrayList()

然后我将所有按钮和圆圈添加到obs列表中:

private final ObservableList<Circle> circles = FXCollections.observableArrayList();
private final ObservableList<Button> buttonsList = FXCollections.observableArrayList();
private final ObjectProperty<BoundsType> selectedBoundsType = new SimpleObjectProperty<>(BoundsType.BOUNDS_IN_PARENT);

圆圈有点不同我点击鼠标单独添加它们。 然后检查圆圈和按钮之间的交叉点。

buttonsList.addAll(rootPane.getChildrenUnmodifiable()
                    .stream()
                    .filter(node -> node instanceof Button)
                    .map(node -> (Button) node)
                    .collect(Collectors.toList()));

但就像我说for (Button btn : buttonsList) { for (Circle c : circles) { ShapePair pair = new ShapePair(c.getShape(), btn.getShape()); if (pair.intersects(selectedBoundsType.get())) { System.out.println("Colision"); //logic } } } 让我为空;(

1 个答案:

答案 0 :(得分:0)

对,我认为这样做更容易

for (Button btn : buttonsList) {
    for (Circle c : circles) {
        if (btn.getBoundsInParent().intersects(b.getBoundsInParent())) {
            System.out.println("Colision");
        }
    }
}