java - 创建一个控件似乎打破了 JFX8 上的透明阶段

标签 java javafx transparency javafx-8

上面的程序应该创建一个带有一些文本的透明舞台,但舞台看起来不透明:

public class Test extends Application { 

@Override 
public void start(Stage primaryStage) { 

    new TextArea(); //Comment this out to enable transparency 

    Stage stage = new Stage(); 
    stage.initStyle(StageStyle.TRANSPARENT); 
    Text text = new Text("Is this transparent?"); 
    VBox box = new VBox(); 
    box.getChildren().add(text); 
    final Scene scene = new Scene(box, 300, 250); 
    scene.setFill(null); 
    stage.setScene(scene); 
    stage.show(); 

} 

} 

new TextArea() 行是破坏事物的原因 - 将其注释掉,一切正常。

创建任何控件子类(即使通过 new Control() {};)都会破坏一些东西 - Region 或更高版本不会。

这不会发生在 Java 7/JFX2.x 中。

我为此创建了一个 JIRA,因为它似乎是一个非常明显的回归( https://javafx-jira.kenai.com/browse/RT-38938 ),但有人知道为什么会发生这种情况,以及在提供修复之前如何解决它吗?我尝试通过复制 Control 的构造函数中的代码来复制此问题,但这似乎没问题 - 它只是实例化 Control 本身,这似乎会破坏一些东西。

最佳答案

remember some forum discussion on this 。我认为一般要点是,创建一个控件会强制将 css 应用到布局 Pane ,并且布局 Pane 将获得不透明的背景。

作为解决方法,使布局 Pane 的背景透明:

    box.setStyle("-fx-background-color: transparent;");

关于java - 创建一个控件似乎打破了 JFX8 上的透明阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278698/

相关文章:

java - 更改时更改显示值

java - 在可平移/可缩放 Pane 中选取并移动节点

css - 如何找到 png 图像中像素的 alpha channel 透明度值?

objective-c - UIView 的 subview 失去透明度

android - 使用具有完全透明背景的 png 在 ImageView 下方着色 Artifact

java - 如何计算最常用的应用程序?

java - Scala:从字节码角度创建公共(public)非最终类字段

java - 如何在javafx中动态加载和删除节点?

java - 使用 Netbeans 导出 JAR

Java Tetris - 使用旋转矩阵的旋转