删除警报的左填充

Remove left padding of Alert

考虑将 TabPane 添加到警报中的示例程序。正如您将看到的,TabPane 左侧有一个我无法删除的白色填充。

如果有人有任何想法那就太好了。

代码:

    import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class AlertTest extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Scene scene = new Scene(new HBox());
        primaryStage.setScene(scene);
        primaryStage.show();

        Alert alert = new Alert(Alert.AlertType.NONE);
        alert.setTitle("");
        alert.initOwner(primaryStage);
        TabPane tabPane = new TabPane(new Tab("test"));
        tabPane.setPadding(Insets.EMPTY);
        alert.getDialogPane().setPadding(Insets.EMPTY);
        alert.getDialogPane().setContent(tabPane);
        alert.show();
    }
}

视觉:

如果像这样添加 css:

 public void start(Stage primaryStage) throws Exception {
    Scene scene = new Scene(new HBox());
    primaryStage.setScene(scene);

    //add this 3 lines
    String css = Main.class.getResource("styles.css").toExternalForm();
    scene.getStylesheets().clear();
    scene.getStylesheets().add(css);

    ...
}

并在 styles.css 中添加

.dialog-pane:no-header .graphic-container {
    -fx-padding: 0; /* 10px 0px 0px 10px */
}

您可以在文件中找到有关默认样式的更多信息:fxrt.jar!/com/sun/javafx/scene/control/skin/modena/modena.css

这是结果 full code demo: