javafx-2 - 如何对不透明的 child 实现透明的 Pane ?

标签 javafx-2

如何在JavaFX 2中实现具有非透明子代的透明面板?
我想要实现的效果例如应用于Blender中的菜单:

菜单面板/窗口是透明的,但是文本项不是透明的,因此效果不错。

最佳答案

将 Pane 的背景设置为带有alpha成分的颜色。您可以为此使用样式表或嵌入式样式。

例如,如果您的 Pane 被命名为玻璃,则以下内容将为圆角的半透明青色背景:

glass.setStyle("-fx-background-color: rgba(0, 100, 100, 0.5); -fx-background-radius: 10;");

您还可以使用混合项,堆栈 Pane 或项目组来实现类似的效果,并在堆栈 Pane 或组的背面为项目设置opacity

这是一个使用css背景方法的可执行示例。
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class TranslucentPane extends Application {
  @Override public void start(final Stage stage) throws Exception {
    final ImageView imageView = new ImageView(
      new Image("https://upload.wikimedia.org/wikipedia/commons/b/b7/Idylls_of_the_King_3.jpg")
    );
    imageView.setFitHeight(300);
    imageView.setFitWidth(228);

    final Label label = new Label("The Once\nand\nFuture King");
    label.setStyle("-fx-text-fill: goldenrod; -fx-font: italic 20 \"serif\"; -fx-padding: 0 0 20 0; -fx-text-alignment: center");

    StackPane glass = new StackPane();
    StackPane.setAlignment(label, Pos.BOTTOM_CENTER);
    glass.getChildren().addAll(label);
    glass.setStyle("-fx-background-color: rgba(0, 100, 100, 0.5); -fx-background-radius: 10;");
    glass.setMaxWidth(imageView.getFitWidth() - 40);
    glass.setMaxHeight(imageView.getFitHeight() - 40);

    final StackPane layout = new StackPane();
    layout.getChildren().addAll(imageView, glass);
    layout.setStyle("-fx-background-color: silver; -fx-padding: 10;");
    stage.setScene(new Scene(layout));
    stage.show();
  }

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

示例程序输出:

once and future

关于javafx-2 - 如何对不透明的 child 实现透明的 Pane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717487/

相关文章:

JavaFX - 通过输入更新 WebView 中变量的值

java - 表格单元格中的 TreeView Java FX 8

java - 如何重用 JavaFX GUI?我可以动态更改 Controller 吗?

netbeans - 我可以对函数变量使用 @FXML 注释吗?

java - 移动刻度标签JavaFx 2

java - 将 JFXPanel 添加到 JPanel

javafx-2 - JavaFX 2.x : Translate mouse click coordinate into XYChart axis value

javafx - TextArea 中的拼写检查文本

java - 是否可以在 ClipboardContent javaFx 上存储节点

JavaFX 2 TextArea 根据其内容改变高度