【发布时间】:2015-03-26 09:18:38
【问题描述】:
我尝试将 JavaFX 中的 Swing 组件与 SwingNode 一起使用:
public class MyTest extends Application {
@Override
public void start(Stage stage) {
final SwingNode swingNode = new SwingNode();
FlowPane pane = new FlowPane();
Button btn = new Button("1");
btn.setVisible(false);
pane.getChildren().add(btn);
createAndSetSwingContent(swingNode);
pane.getChildren().add(swingNode);
stage.setScene(new Scene(pane, 100, 50));
stage.show();
btn.setVisible(true);
}
private void createAndSetSwingContent(final SwingNode swingNode) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
swingNode.setContent(new JButton("Click me!"));
}
});
}
public static void main(String[] args) {
launch(args);
}
}
启动应用程序后,窗口的某些部分(背景和 JavaFX 按钮)是黑色的:
调整大小(或其他更新)后,窗口正确显示:
为什么会这样,我该如何解决?
【问题讨论】:
-
您的代码看起来与sample SwingNode code in Javadoc 几乎相同,所以我不知道为什么它不适合您。我的猜测是这个问题是特定于环境的。也许在您的问题中添加您的环境的详细信息(Java 版本、操作系统版本、图形硬件、图形驱动程序)。如果您愿意,您也可以使用此信息在JavaFX issue tracker 中提交报告。 FWIW,我使用 OS X 10.9 + Java 8u25,没有什么是黑色的 - 一切正常。
-
那是什么版本的JDK?
-
我的环境的详细信息:Windows 8.1 Pro AMD Radeon HD 7800 驱动程序版本下的 Java SE 1.8 Development Kit 8 Update 31 (64bit) 驱动程序版本:14.501.1003-141120a-178000C