我正在使用带有最小化按钮的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);
}
}
我使用布尔标志位由于某种原因代码的逻辑是不正确的。你能帮我解决这个问题吗?
答案 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);
}