【问题标题】:JavaFx Dialog remove bottom spaceJavaFx 对话框删除底部空间
【发布时间】:2017-06-21 17:02:20
【问题描述】:

考虑以下代码:

public class Main extends Application {
    public static void main(String[] args) throws Exception {
        launch( args );
    }

    @Override
    public void start(Stage stage) throws Exception {
        final BorderPane p = new BorderPane();

        final Dialog dialog = new Dialog() { {
            getDialogPane().setContent( new Button( "TEXT" ) );
        } };

        final Button bt = new Button( "LAUNCH" );
        bt.setOnAction( e -> dialog.show() );

        p.setCenter( bt );

        stage.setScene( new Scene( p ));

        stage.show();
    }
}

结果是:

代码是简化的例子。

问题在于底部有多余的空间。有什么办法可以去掉吗?谢谢。

【问题讨论】:

    标签: javafx dialog padding space


    【解决方案1】:

    你可以这样做:

    @Override
    public void start(Stage stage)
    {
        final BorderPane p = new BorderPane();
    
        Stage dialog = new Stage();
        dialog.initModality(Modality.APPLICATION_MODAL);
        dialog.setScene(new Scene(new Button("TEXT")));               
    
        final Button bt = new Button( "LAUNCH" );
        bt.setOnAction( e -> dialog.show() );
    
        p.setCenter( bt );
    
        stage.setScene( new Scene( p ));
    
        stage.show();
    }
    

    【讨论】:

    • 这将在任务栏中显示另一个图标。舞台!= 对话框
    • 是的,这工作!谢谢!我试图在回答之前找到这种行为的原因,但没有成功。如果我们使用 initStyle(StageStyle.UNDECORATED),底部空间会消失,但我们也会松散框架!
    【解决方案2】:

    使用此选择器在与您的类相同的包中定义样式文件“style.css”:

    .dialog-pane > .button-bar > .container {
        -fx-padding: 0;
    }
    

    在Java代码中设置样式表:

    
    dialog.getDialogPane().getStylesheets().add(getClass().getResource("style.css").toExternalForm());
    
    

    【讨论】:

      【解决方案3】:

      最简单的方法:

      dialog.getDialogPane().setPadding(Insets.EMPTY);
      

      【讨论】: