如何设置ControlFX Popover组件的高度和宽度

时间:2016-03-10 17:00:43

标签: css javafx javafx-8 fxml controlsfx

我使用ControlFx的Popover来显示验证消息。我无法为弹出窗口设置所需的高度,宽度和样式。以下是我正在使用的代码。

PopOver popOver = new PopOver();
        Label messageLable = new Label();
        messageLable.setFont(Font.font(12));
        messageLable.setMinHeight(15);
        messageLable.setMaxHeight(15);
        messageLable.setMinWidth(40);
        messageLable.setText("Appropriate validation message ");
        popOver.setContentNode(messageLable);
        popOver.arrowSizeProperty().bind(new SimpleDoubleProperty(12));
        popOver.arrowIndentProperty().bind(new SimpleDoubleProperty(12));
        popOver.arrowLocationProperty().bind(new SimpleObjectProperty<>(ArrowLocation.LEFT_TOP));
        popOver.cornerRadiusProperty().bind(new SimpleDoubleProperty(5));
        popOver.hide(Duration.seconds(4));
        popOver.setDetachable(Boolean.FALSE);
        popOver.setStyle("-fx-background-color: rgb(255,0,255);");

修改1:

我能够从CSS设置样式(背景颜色等)。恢复到Styling JavaFX Popover的答案。 但是我仍然无法设置所需的高度和宽度

1 个答案:

答案 0 :(得分:0)

我无法减小宽度和高度,因为PopOverSkin类使用arrowsize属性,corner radius属性和箭头缩进属性。 以下是PopOverSkin类的摘录。

/*
         * The min width and height equal 2 * corner radius + 2 * arrow indent +
         * 2 * arrow size.
         */
        stackPane.minWidthProperty().bind(
                Bindings.add(Bindings.multiply(2, popOver.arrowSizeProperty()),
                        Bindings.add(
                                Bindings.multiply(2,
                                        popOver.cornerRadiusProperty()),
                                Bindings.multiply(2,
                                        popOver.arrowIndentProperty()))));

减少箭头大小,角半径和箭头缩进相应地改变了弹出窗口的高度和宽度