gpt4 book ai didi

java - 调用静态内容

转载 作者:行者123 更新时间:2023-12-01 18:44:28 26 4
gpt4 key购买 nike

我有来自 JavaFX 应用程序的代码:

private static final ImageView ncpic;    
static {
ncpic = new ImageView(TabContent.class.getResource("/images/6.jpg").toExternalForm());
}

我注意到这张图片只能使用一次。当我使用它两次时,我称之为它的场景是空的。我怎样才能使用这张图片两次或更多次?也许这是由我调用显示图片的静态java方法引起的?

P.S 简单示例:

public class TabContent {

private static final ImageView ncpic;
static {
ncpic = new ImageView(TabContent.class.getResource("/images/6.jpg").toExternalForm());
}

private static StackPane generalConfiguration() {

StackPane stack = new StackPane();
stack.getChildren().addAll(ncpic); // Add the picture and the Label
return stack;
}
}

我这样使用它:TabContent.generalConfiguration()第二次是在不同的 Java 类中。

最佳答案

为什么只显示一个ImageView

ImageView是一个节点。场景图中只能有一个节点实例。请参阅Node documentation :

If a program adds a child node to a Parent (including Group, Region, etc) and that node is already a child of a different Parent or the root of a Scene, the node is automatically (and silently) removed from its former parent.

如何修复

如果你想在多个节点之间共享图像数据,你可以这样做。例如。

private static final Image ncpic = new Image(
TabContent.class.getResource(
"/images/6.jpg"
).toExternalForm()
);

请注意,仅单个初始化语句不需要静态 block 。

另请注意,上面的代码可以在 Java 7 下运行,但是 may fail under the current Java 8 early access release 。如果在静态代码运行之前首先初始化 JavaFX 系统(例如,之前已执行应用程序的 init 或 start 方法),您将确信代码将在 Java 8 中运行。

每当您想要重用该图像时,只需将其包装在新的 ImageView 中,然后再将其添加到场景中即可。例如:

pane1.add(new ImageView(ncpic));
pane2.add(new ImageView(ncpic));

现在,图像将同时显示在 pane1 和 pane2 中,而不是像您尝试重用单个静态 ImageView 实例时那样仅显示在 pane2 中。

示例代码

Peter 问题中的示例代码可以重写如下以正确运行:

public class TabContent {
private static final Image ncpic = new Image(
TabContent.class.getResource(
"/images/6.jpg"
).toExternalForm()
);

private static StackPane generalConfiguration() {
StackPane stack = new StackPane();
stack.getChildren().addAll(new ImageView(ncpic));

return stack;
}
}

关于java - 调用静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com