用于改变大小的按钮

时间:2014-01-25 10:27:01

标签: java javafx javafx-8

我正在使用带有最小化按钮的JavaFX面板代码。我希望然后按下按钮缩小面板尺寸,再次按下按钮恢复原始尺寸。

public class MainApp extends Application
{

    private static BorderPane bp;

    @Override
    public void start(Stage stage) throws Exception
    {

        FlowPane flow = new FlowPane();
        flow.setPadding(new Insets(50, 5, 5, 5));
        flow.setVgap(15);
        flow.setHgap(15);
        flow.setAlignment(Pos.CENTER);

        Button button = new Button("Minimize");

        HBox thb = new HBox();
        thb.getChildren().add(button);
        thb.setAlignment(Pos.CENTER_RIGHT);

        boolean flag = true;


        button.setOnAction(new EventHandler<ActionEvent>()
        {

            @Override
            public void handle(ActionEvent t)
            {
                if (flag == true)
                {
                    flag = false;
                    bp.setPrefSize(600, 40);
                    bp.setMaxSize(600, 40);

                }
                else
                {
                    bp.setPrefSize(600, 500);
                    bp.setMaxSize(600, 500);
                }

            }
        });






        thb.setPadding(new Insets(13, 13, 13, 13));
        thb.setStyle("-fx-background-color: gray");

        DropShadow ds = new DropShadow();
        ds.setOffsetY(3.0);
        ds.setOffsetX(3.0);
        ds.setColor(Color.GRAY);

        bp = new BorderPane();
        bp.setEffect(ds);
        bp.setPrefSize(600, 500);
        bp.setMaxSize(600, 500);

        bp.setStyle("-fx-background-color:  white;");
        bp.setTop(thb);
        flow.getChildren().add(bp);
        Scene scene = new Scene(flow, 1200, 800);
        scene.getStylesheets().add("/styles/Styles.css");

        stage.setScene(scene);
        stage.show();
    }

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

}

我使用布尔标志位由于某种原因代码的逻辑是不正确的。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在其他部分使用flag值true

            if (flag == true)
            {
                flag = false;
                bp.setPrefSize(600, 40);
                bp.setMaxSize(600, 40);

            }
            else
            {
                flag = true;
                bp.setPrefSize(600, 500);
                bp.setMaxSize(600, 500);
            }