当前位置: 首页 > 知识库问答 >
问题:

在getParent()上返回null的JLayeredPane

越俊艾
2023-03-14

我的情况:我有一个扩展JFrame的类MainScreen(它实际上只是一个带有启动应用程序的main方法的JFrame),我在这个类上添加了一个扩展JLayeredPane的类GameManager,我用它来显示一些东西。

public static void main(String[] args) {
    MainScreen ms = new MainScreen();
}

public MainScreen() {
    this.initScreen();
    this.gm = new GameManager();
    this.add(gm, BorderLayout.CENTER);
    this.setVisible(true);
}       

现在,我要做的是,从GameManager类中,我要向主JFrame添加一个JButton。我以为这会很容易,只要做:

JButton button = new JButton("Hello");
this.getParent().add(button, BorderLayout.SOUTH);

但是getParent()返回的是null,所以很明显它不起作用。我不知道为什么,我以前做了类似的事情(虽然有一个JComponent和一个JPanel),我认为每个JComponent添加到容器中时都将容器作为它的父容器。我错过了什么?

共有1个答案

牛嘉谊
2023-03-14

如有下列声明:

This.GetParent().Add(button,BorderLayout.South);

存在于GameManager.java的构造函数中,则getParent()返回null是正确的。这是因为GameManager的对象是在调用This.GetParent().Add(button,BorderLayout.South);之后添加到MainScreen的。

每个顶级容器都有一个内容窗格,一般来说,该窗格包含(直接或间接)该顶级容器的GUI中的可见组件。

对于jframe,默认的内容窗格是jpanel。因此,当您调用this.add(gm,BorderLayout.Center);时,您实际上将GameManager的实例添加到JFrame的默认内容窗格中,即JPanel。这就是GameManager.getParent()JPanel的原因。希望,这有帮助。

 类似资料:
  • 问题内容: 所以我有这段代码,我只想在另一个目录中列出保存的列表,其中php scrip在xampp文件夹中,并且保存到此路径: 我不知道为什么我不能让它继续工作,似乎输出为空,我真的混淆了它应该工作,或者我只是错了我需要一些帮助。 问题答案: 添加到shell命令的末尾以返回。 另外,如果运行PHP的用户没有足够的权限来查看中的输出,则上述代码将返回错误消息。

  • 为了学习平均堆栈(使用Mongoose),我创建了一个StackOverflow类型的应用程序。我有存储在Mongo(v3.0.7)中的问题,它们有答案子文档。 我试图增加一个答案的投票数,但当问题返回时,它是空的。我非常肯定查询有问题,特别是我试图用需要修改的ID得到答案的地方。 查询0票有效: 更新:通过Mongo查询,返回结果: 但是,通过Mongoose返回NULL:

  • 我在Xcode10.0 Mac OS 10.14上用glew2.1和glfw3.2做OpenGL作业,但是glfwCreateWindow总是返回NULL。代码如下: 如果我删除4 glfwWindowHint句子,将显示一个窗口,但它是黑暗的,并且Xcode控制台将抛出一个错误:设置为窗口的第一响应者,但它在另一个窗口中((空))!当视图被释放时,这最终会崩溃。第一个响应程序将设置为 nil。

  • 我有两个活动和两个布局。当我在第一个活动中显示列表时,一切都正常,并在单击时给出列表中项目的编号,但当我尝试在第二个活动中重复相同的内容时,它会告诉我RecycleServiceClickListener侦听器为空。 适配器: 第一项活动: 第二项活动: 错误: 我不明白为什么在第一种情况下,它正常处理单击,而在第二种情况下,它说RecyclerViewClickListener为null

  • 当我尝试用相同的设置在代码中创建OracleDataSource时,我可以正确地检索连接。我的出厂配置有什么问题?

  • 问题内容: 我正在使用Servlets&Struts2的混合情况下工作。 我正在调用HTTPServlet,并且正在处理数据。 然后,我需要调用struts API在DB中插入数据。 在那我也使用HTTPSession。 所以我打电话 要获取HttpRequest,然后在该struts动作类中进行会话。 Servlet正在调用Struts Action类。 但 始终返回NULL。 是因为它没有被网