我遇到的问题是FlowPane留下了很多多余的空间,它可能是Popup,尽管我认为popup的大小是内容的大小。

为了进行调试,我将文本包装在BorderPane中以显示文本的边界。

我关注的组件是错误弹出窗口。


的CSS

.warning-popup {
    -fx-padding: 10px;
    -fx-hgap: 10px;
    -fx-vgap: 10px;
    -fx-background-color: #704745;
    -fx-border-color: #C8C8C8;
    -fx-background-radius: 2px;
    -fx-border-radius: 2px;
}


.warning-popup .text {
    -fx-fill: #000000;
}


Java代码

public static void showWarningPopup(Node owner, String message, double screenX, double screenY) {
    // create message text
    Text text = new Text(message);
    text.getStyleClass().add("text");
    // wrap text in container
    Pane textContainer = new BorderPane(text);
    textContainer.setStyle("-fx-background-color: orange;");
    // create error image
    ImageView image = new ImageView("/resources/error-14.png");
    image.getStyleClass().add("image-view");
    // create content
    FlowPane content = new FlowPane(image, textContainer);
    content.getStyleClass().add("warning-popup");
    content.autosize();
    // create and show the popup
    Popup popup = new Popup();
    popup.setHideOnEscape(true);
    popup.setAutoHide(true);
    popup.setAutoFix(true);
    popup.getContent().add(content);
    popup.show(owner, screenX, screenY);
}


谢谢您的任何帮助:)

最佳答案

背景

您面临的问题是由于FlowPane的默认WrapLength设置为400。此属性还将FlowPane的width设置为400

从文档:


  FlowPane的prefWrapLength属性确定其首选宽度(对于水平)或首选高度(对于垂直)。




您可以通过使用将wrapLength减小到所需的值

flowPane.setPrefWrapLength(YOUR_VALUE);

10-06 13:57