【发布时间】:2016-08-17 18:10:54
【问题描述】:
JavaFx 的 SwingNode 显示它在 Java 1.8.0_102-b14 中包含的组件时遇到问题。我不确定这个问题是否是由于我的 Java 版本太旧、当前(如果我是当前)Java 版本中的错误,或者我做错了一些 SwingNode 进程。我知道这个问题在JavaFX and SwingNode - partial black Window 之前已经报告过,所以我真的在寻找有关我的 Java 版本的反馈。
此代码通常会错误地显示“button1”,如黑色或背景色,直到鼠标悬停在它上面或单击它。这对我来说不是一个理想的解决方法,因为我的项目在 Fx 项目中使用了更复杂的摆动面板,不幸的是,纯 Fx 不是一个选项。
import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javax.swing.JButton;
public class Test extends Application {
@Override
public void start(Stage stage) {
final SwingNode swingNode1 = new SwingNode();
final SwingNode swingNode2 = new SwingNode();
swingNode2.setContent(new JButton("Click me!"+2));
swingNode1.setContent(new JButton("Click me!"+1));
BorderPane pane = new BorderPane();
pane.setLeft(swingNode1);
pane.setRight(swingNode2);
stage.setScene(new Scene(pane, 200, 50));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在创建这个 sssce 时,我发现在设置右侧 SwingNode 中的内容之前设置左侧 SwingNode 中的内容更正了这个简单代码的问题,但不适用于我的大型项目。所以我猜这是内存泄漏,但我无法从我的机器上分辨出来。
有人可以测试这段代码,看看他们是否得到类似的结果吗?
编辑:感谢您的快速反馈,请不要专注于按钮,因为它们只是演示我的问题的工具。奇怪的功能与其他对象而不是按钮的行为方式相同。
【问题讨论】:
-
即使按照@James_D 复制 Javadocs 示例,问题仍然存在。还有其他想法吗?这个bug显然在U40中已经修复了,会不会又被破解了?
-
我仍然在 Windows 7 上的最新 8u121 中看到这个问题,使用 invokeLater() 或 invokeAndWait()
标签: java swing debugging javafx