上面的程序应该创建一个带有一些文本的透明舞台,但舞台看起来不透明:
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/