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

时间:2014-10-09 12:40:58

标签: 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本身似乎打破了事情。

1 个答案:

答案 0 :(得分:2)

remember some forum discussion on this。我认为一般的要点是创建一个控件强制css应用于布局窗格,布局窗格正在获得不透明的背景。

要解决此问题,请将布局窗格的背景设为透明:

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