Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display a menu and a panel in the same window in Java Swing?

I've got a JMenu and I want to change the window's content according to what button from the menu is pressed. I managed to show the panel as a popup, but I want it to be displayed in the same window with the menu. This is my code so far :

public class GUImenu extends JFrame


{
      private JMenuBar menuBar;   
       private JMenu menu;          
       private JMenu subMenu;    
       private JMenuItem item1;
       private JMenuItem item2;
       private JMenuItem item3;
       private JMenuItem item4;
       private JMenuItem item5;
       private JMenuItem item6;

       public GUImenu()
       {
          super("Example Menu System");// Call the JFrame constructor.
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // Specify an action for the close button.
          buildMenuBar();

          // Pack and display the window.
          pack();
          setSize(1000, 250); // set frame size
          setVisible(true);
       }

       private void buildMenuBar()
       {
          // Create the menu bar.
          menuBar = new JMenuBar();

          // Create the file and text menus.
          menu = new JMenu("Menu"); menuBar.add(menu);
          subMenu = new JMenu("Create Customer");
          item1 = new JMenuItem("Ordinary Customer"); subMenu.add(item1);
          item1.addActionListener(new showOrdinaryCust());
          item6 = new JMenuItem("Privileged Customer"); subMenu.add(item6);

          menu.add(subMenu);
          item2 = new JMenuItem("View Customers Who Didn't Pay"); menu.add(item2);
          item3 = new JMenuItem("Remove Client");menu.add(item3);
          item4 = new JMenuItem("Create Order"); menu.add(item4);
          item5 = new JMenuItem("Search..."); menu.add(item5);
          setJMenuBar(menuBar);

       }

       public static void main(String[] args)
       {
          new GUImenu();
       }
       private class showOrdinaryCust implements ActionListener
       {
          public void actionPerformed(ActionEvent event)
          {
              if(event.getSource()==item1)
                  GUIpanel.main(null);

          }
       }
 }
like image 544
user1087920 Avatar asked Sep 12 '25 23:09

user1087920


1 Answers

I would try to fill the entire window with a CardLayout. CardLayout is meant to switch its contents between separate views. Simply set up multiple cards for each of the panels you want to show and have the menu switch between them.

like image 52
aardvarkk Avatar answered Sep 14 '25 13:09

aardvarkk