添加时出现异常的 CardLayout?

CardLayout with Exception on add?

这是我第一次尝试 运行 使用 Cardlayout 编写代码。 这是 add 方法的异常(空指针)。 但是我也试图弄清楚如何设计卡片布局,例如卡片,并排或一张在另一张下面。我更喜欢后者。 我已经尝试更改我的代码并阅读有关类似问题的其他主题。如有任何误会,敬请谅解。

谢谢

</p> <pre><code> package jnotizen; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.SwingUtilities; import javax.swing.UIManager; /** * * */ public class JNotizen { /** * @param args the command line arguments */ JFrame f; BorderLayout bl; JPanel p; JPanel start; JPanel notices; CardLayout c; JTextArea ta; JButton nn; JButton sv; JButton sn; String controls = "Controls"; String noticeBoard = "NoticeBoard"; public static void main(String[] args) { // TODO code application logic here SwingUtilities.invokeLater(new Runnable() { public void run() { //Turn off metal's use of bold fonts UIManager.put("swing.boldMetal", Boolean.FALSE); new JNotizen().startApp(); } }); } private void startApp() { c = new CardLayout(); p = new JPanel(c); nn = new JButton("New Notice"); sv = new JButton("Save Notice"); sn = new JButton("Search Notice"); ta = new JTextArea(""); start.add(nn); // here I get the NullpointerException? start.add(sv); start.add(sn); notices.add(ta); p.add(start, controls); p.add(notices, noticeBoard); CardLayout cl = (CardLayout)(p.getLayout()); cl.first(p); BufferedImage img = null; try { InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("iconHash2.jpg"); img = ImageIO.read(inStream); } catch (IOException e) {} f = new JFrame(); f.getContentPane().add(p, BorderLayout.CENTER); f.setTitle("NoticeBoard"); f.setIconImage(img); f.setSize(450,550); f.setResizable(false); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

JPanel start 从未初始化。因此它在 start 变量上调用一个空指针。在添加组件之前尝试初始化 JPanel start