我使用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的答案。 但是我仍然无法设置所需的高度和宽度
答案 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()))));
减少箭头大小,角半径和箭头缩进相应地改变了弹出窗口的高度和宽度