将JFrame转换为JPanel

4

我目前编写了一些使用JFrame的Java Swing,并且它运行良好。

但现在我需要使用多个屏幕,它们使用cardlayouts完成。

所以我需要将我的JFrame转换为JPanel。目前我有以下代码用于我的JFrame

mainFrame.getContentPane().add(c4Panel,BorderLayout.CENTER); 

但是如果我将 mainFrame 转换为 JPanel,我就无法使用 getContentPane(),IDE 告诉我要使用 getRootPane()

但是在这一行代码上我会出现错误。

mainPanel.getRootPane().add(c4Panel,BorderLayout.CENTER); 

我收到的错误信息是:
Exception in thread "main" java.lang.NullPointerException

1
JPanel 没有 getContentPanegetRootPane?考虑提供一个可运行的示例,以演示您遇到的问题。这不是代码转储,而是展示您正在做什么并突出显示您遇到的问题的示例。这将减少混淆并获得更好的响应。 - MadProgrammer
1
JFrameJPanel之间有许多不同之处,请在提问之前先阅读一本好书。 - Blip
我知道它们之间有区别,因此尝试在两者之间进行转换。如果我表达不清楚,对不起。 - user21902195
@Blip "get hold of a good book" 那已经过时了!我更喜欢(在线)Java文档 - Andrew Thompson
1
@AndrewThompson 我完全同意你的观点。 - Blip
如果您知道两者之间的区别,那么您可以解释一下为什么要调用JPanel.getContentPane()吗? - Blip
1个回答

3
mainPanel.getRootPane().add(c4Panel,BorderLayout.CENTER); 

应该只是:

mainPanel.add(c4Panel,BorderLayout.CENTER); 

代码如下:
mainFrame.getContentPane()

..只是返回一个容器,这个容器本身有一个add()方法,而getContentPane()部分已经不再必要。


我尝试了这个 mainPanel.add(c4Panel,BorderLayout.CENTER); 但是我得到了这个 Exception in thread "main" java.lang.NullPointerException - user21902195
c4Panel已经创建了吗?mainPanel已经创建了吗?请回答一个MCVE(最小完整可验证示例)或SSCCE(简短,自包含,正确的示例)。坦率地说,解决NullPointerException或理解IDE错误消息是程序员在尝试制作GUI之前应该习惯的事情,这是相当高级的话题。 - Andrew Thompson
当我遇到NullPointerException时,我感到困惑。我会继续搜索。它在JFrame中运行良好,在JPanel中出现问题。谢谢你的帮助。确认我走在正确的轨道上。 - user21902195

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接