禁用后台阶段javafx

时间:2016-07-20 12:54:31

标签: javafx

我是法国人,对不起该错误。

我有一个初级阶段,前景是一个小的第二阶段。当第二阶段可见时,我希望在所有初级阶段以灰色显示。

很好,我无法用初级线点击初级阶段:

stage.initModality(Modality.WINDOW_MODAL);

但我想在初级阶段涂上灰色。 我尝试在初级阶段禁用所有组件(每个组件都是灰色并禁用)但是imageViews不是灰色的,这是一个问题。

请帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将所有内容添加到Stackpane并将Region设置为面纱(visible = true / false)。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class VeilDemo extends Application {

  @Override
  public void start(Stage primaryStage) {
    // that is the veil
    Region veil = new Region();
    veil.setStyle("-fx-background-color: rgba(0, 0, 0, 0.3)");
    veil.setVisible(false);

    Button btn = new Button();
    btn.setText("Open Dialog");
    btn.setOnAction((ActionEvent event) -> {
      Alert a = new Alert(Alert.AlertType.INFORMATION);
      //veil is only visible when alert window is showing
      veil.visibleProperty().bind(a.showingProperty());

      a.setContentText("The main window should be decorated with a veil.");
      a.setX(primaryStage.getX() + 200); // This is only for showing main window
      a.showAndWait();
    });

    Image img = new Image("https://www.gnu.org/graphics/gnu-head-sm.png");
    ImageView iv = new ImageView(img);

    // this should be the normal root of window
    BorderPane bp = new BorderPane(iv);
    bp.setBottom(btn);

    StackPane root = new StackPane();
    root.getChildren().addAll(bp, veil);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    launch(args);
  }

}

主窗口如下所示:

mainwindow

如果单击该按钮,则会打开信息窗口,并且主舞台上的面纱可见。

enter image description here