Java GUI-是否可以在单个主JPanel中存储JPanel?

Java GUI-是否可以在单个主JPanel中存储JPanel?,java,swing,user-interface,cardlayout,Java,Swing,User Interface,Cardlayout,我正在做一个学期的项目,我想知道是否有可能存储3-4个JPanel而不是一个主JPanel。我问这个问题的原因是因为我正在尝试制作一个GUI支票簿程序,我的支票簿有7个按钮,一旦我点击它就会打开一个新窗口。要在每个窗口之间切换,我必须使用CardLayout,但我对CardLayout的理解是,我只能将一个JPanel分配给该卡,因此我不能将多个JPanel分配给单个卡布局,因此当用户单击不同的卡时,会出现3-4个不同的JPanel 我之所以问这个问题,是因为我之前请求过帮助,并在这个项目中获得

我正在做一个学期的项目,我想知道是否有可能存储3-4个JPanel而不是一个主JPanel。我问这个问题的原因是因为我正在尝试制作一个GUI支票簿程序,我的支票簿有7个按钮,一旦我点击它就会打开一个新窗口。要在每个窗口之间切换,我必须使用CardLayout,但我对CardLayout的理解是,我只能将一个JPanel分配给该卡,因此我不能将多个JPanel分配给单个卡布局,因此当用户单击不同的卡时,会出现3-4个不同的JPanel

我之所以问这个问题,是因为我之前请求过帮助,并在这个项目中获得了创建我的第一个窗口的帮助,它完美地生成了我想要的输出,但在这样做时使用了不止一个JPanel。因为这阻止了我继续我的7个GUI窗口的其他步骤,我被卡住了

代码如下:

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class checkbook extends JPanel implements ActionListener {
   private static final String title = "Use The Buttons Below To Manage Transactions";

   private static final String[] bottomButtons = { "Create a New Account",
         "Load a Trans from a File", "Add New Transactions",
         "Search Transactions", "Sort Transactions",
         "View/Delete Transactions", "Backup Transaction", "Exit" };


   static JButton Button[] = new JButton[8];
   static ActionListener AL = new checkbook();

   public checkbook() {

      JLabel titleLabel = new JLabel(title, SwingConstants.CENTER);
      titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 18));
      JPanel titlePanel = new JPanel();
      titlePanel.add(titleLabel); // put it in a JPanel so it will expand to fill BoxLayout

      JTextField textfield = new JTextField();
      JPanel accountBalancePanel = new JPanel();
      accountBalancePanel.add(new JLabel("Account Name:"));
      accountBalancePanel.add(new JTextField(10));
      accountBalancePanel.add(Box.createHorizontalStrut(4));
      accountBalancePanel.add(new JLabel("Balance:"));
      textfield = new JTextField("0.0", 10);
      textfield.setHorizontalAlignment(JTextField.RIGHT);
      accountBalancePanel.add(textfield);


      JPanel northPanel = new JPanel();
      northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.PAGE_AXIS));
      northPanel.add(titlePanel);
      northPanel.add(accountBalancePanel);

      JPanel southBtnPanel = new JPanel(new GridLayout(2, 4, 1, 1));

      for(int i = 0; i < 8; i++){

         Button[i] = new JButton(bottomButtons[i]);
         southBtnPanel.add(Button[i]);
         Button[i].addActionListener(AL);

      }


      setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
      setLayout(new BorderLayout());
      add(northPanel, BorderLayout.NORTH);
      add(Box.createRigidArea(new Dimension(100, 100))); // just an empty placeholder
      add(southBtnPanel, BorderLayout.SOUTH);
   }

   private static void createAndShowGui() {
      checkbook mainPanel = new checkbook();


      JFrame frame = new JFrame("Checkbook");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {

      SwingUtilities.invokeLater(
            new Runnable() {
               public void run() {
                  createAndShowGui();
               }
            });
   }
   public void actionPerformed(ActionEvent e)
   {
      if(e.getSource() == Button[7]) {
         System.exit(0);
      }
   }

}
感谢装满鳗鱼的气垫船向我展示了上面的例子

如果我的问题有任何不清楚的地方,请询问,我会尽我所能解决它

下面是代码生成的内容:


请澄清:我对CardLayout的理解是,我只能为该卡分配一个JPanel,因此我不能为一个卡布局分配多个JPanel,因此当用户单击不同的卡时,会出现3-4个不同的JPanel。这句话让我非常困惑。是的,几天前,当我去请我的教授澄清我将如何制作支票簿程序的不同窗口时,他说使用卡片布局,当他给我看一个例子时,我问他是否可以在一张卡片上添加多个JPanel。如果card1和card2是JPanels contentPane.addCard1,card1 contentPane.addCard1,card2;contentPaneLayout.showContentPanel,card1因此我将card1和card2 JPanel都添加到card1中,因此当我显示card1时,两个JPanel都会出现。作为使用上述代码的示例,我希望将northPanel和southBtnPanel存储到一张卡中,以便当用户单击按钮时,它会显示我分配给该卡的所有JPanel。但是我的教授告诉我我们不能这么做,你只能给一张卡分配一个JPanel。注意:一个面板可能包含3-4个面板。我问我的教授同样的问题,如果我能将许多JPanel存储到一个JPanel中,他说你的教授不是唯一一个白痴。以第一个面板panel1为例,设置一个类似于flow布局或grid布局的布局。添加三个面板作为panel1.addpanel2;panel1.addpanel3。。