美好的一天,
当我运行此代码时:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class mcve extends Application {
static Label myScore = new Label("Test");
static Rectangle rect = new Rectangle(0,0,10,10);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
myScore.setTextFill(Color.WHITE);
myScore.setLayoutY(20);
myScore.setLayoutX(200);
myScore.setFont(new Font("Arial", 30));
myScore.setText("0");
rect.setFill(Color.WHITE);
final Group group = new Group(myScore,rect);
Scene scene = new Scene(group, 500, 500, Color.BLACK);
stage.setScene(scene);
stage.show();
}
}
它创建以下异常:
Exception in thread "main" java.lang.ExceptionInInitializerError
at mcve.<clinit>(mcve.java:11)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
at javafx.scene.control.Control.<clinit>(Control.java:87)
... 4 more
但是,如果我在顶部的Label之前删除static关键字,则代码可以正常运行。
我的问题是:为什么在创建静态标签而不是静态矩形时会发生错误?我希望Label是静态的,而不是类的对象。
为什么创建a
static Label
而不创建a时会发生错误static Rectangle
?
本质上,这是初始化顺序的问题。创建Node
对象时,需要正确初始化UI平台。潜在地,它也可能发生在上Rectangle
,但很可能a
Label
(是Control
)更多地依赖于正确初始化的平台。在此特定情况下,不同之处在于Shape
对象不需要CSS
,而Control
对象则需要。这将导致在工具包尚未初始化时调用平台方法,如堆栈跟踪所示。
在static
当类成员初始化class mvce
时加载。这是在main()
html" target="_blank">调用方法之前完成的,因此launch()
是在调用方法之前完成的。该平台目前尚未初始化。
另一方面,非静态成员在class mvce
实例化时被初始化。在class mvce
通过内部实例化的launch()
方法, 之后 该工具包已经被正确初始化。
同样,通常没有理由使用静态引用。只需使用一个成员。
日安, 当我运行此代码时: 它会创建以下异常: 但是,如果我在顶部的Label之前删除了静态关键字,代码运行得很好。 我的问题是:为什么创建静态标签而不是静态矩形时会出现错误?我希望标签是静态的,而不是一个类的对象。
问题内容: 我要声明一个字段: 首先,问题的顺序吗?如果没有,是否存在标准的可接受序列或约定? 其次,我的应用程序中的是固定的。这是最好的方式来存储其价值吗? 问题答案: 我将Checkstyle与Eclipse结合使用,如果声明的顺序与您指定的顺序不同,则会导致警告,引用Java语言规范(JLS)。例如, 结果是 他们的页面列出了他们期望的顺序,尽管通过该页面上的链接到JLS,我看不到任何东西可
使(或其他集合)成为final的优点/缺点是什么?如果我们尝试这样做呢: 这是有效的吗?现在引用A将指向L所指向的这个数组列表?请帮帮忙。
问题内容: 这三种方法(都用于将一个数组转换为另一个数组)之间的性能差异(如果有)是什么? 使用 使用和λ/关闭功能 使用带有“静态”函数/方法 还有其他方法吗? 为了使自己清楚,让我们看一下这些示例,它们都做同样的事情-将数字数组乘以10: 佛瑞奇 带有lambda的地图 具有“静态”功能的地图,作为字符串引用传递 还有其他方法吗?我将很高兴听到上面案例之间的 所有 实际差异,以及为什么要使用一
null 还有其他办法吗?我将很高兴听到实际所有的差异之间的情况从上面,以及任何输入为什么应该使用一个而不是其他。
我有个问题。 我在推送通知中有一个深度链接的逻辑。 这是FCM现在的json: 是否有一种方法可以继续使用这个json模型并在后台接收调用?