上述程序应该创建一个带有一些文本的透明舞台,但舞台看起来不透明:
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
本身似乎打破了事情。
答案 0 :(得分:2)
我remember some forum discussion on this。我认为一般的要点是创建一个控件强制css应用于布局窗格,布局窗格正在获得不透明的背景。
要解决此问题,请将布局窗格的背景设为透明:
box.setStyle("-fx-background-color: transparent;");