JRootPane.getName()返回Null?

时间:2017-01-11 18:54:02

标签: java swing jframe

我正在尝试调试一个非常讨厌的错误(我的面板即使被添加到JFrame也没有显示)并且我注意到我的JFrame里面的JRootPane有一个设置为null的名称: (这是我的JFrame构造函数的一部分)

this.add(uiRenderer/*This is a JPanel*/); //adding the panel to the jframe
System.out.println(this.getRootPane().getName()); //getting the name of the root pane

这是正常的吗?或者这可能导致面板根本不显示?可能是什么导致了这个?另外,JRootpane本身不是null,只是getName()返回的名称String。我可以很好地获取rootpane中的组件,并显示我想要添加到JFrame的面板,但它仍然没有显示出来。 谢谢!

好的,这可能是一个java版本的bug。看起来这个空名称发生在旧版本的java中。 https://bugs.openjdk.java.net/browse/JDK-4836615 感谢任何让我知道此事的人。

1 个答案:

答案 0 :(得分:1)

JRootPane从其父级Component继承getName(),而JRootPane不会覆盖该方法。如果您未明确将名称设置为非空值,getName()将返回null。一个典型的实现是here。它调用package-private方法constructComponentName(),它无条件地返回null

String constructComponentName() {
    return null;
}