Monday 23 May 2011

Layout in java


/*
   This applet demonstrates various layout managers.
   The applet itself uses a border layout with a JPanel in
   the center, a JComboBox menu to the North, and a JLabel
   to the south. The center panel uses a CardLayout.
   Each card in the card layout contains a number of
   buttons and uses a different layout manager.  The
   JComboBox menu is used to select among these cards.
   The JLabel reports events as they occur.
*/


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

public class LayoutDemo extends JApplet
                          implements ActionListener, ItemListener {

   CardLayout cards;      // the layout manager for the center panel
   JPanel cardPanel;      // the center panel
   JComboBox panelChoice; // menu for selecting which card to show
   JLabel message;        // a message shown at the bottom of the applet
  
   public void init() {
  
      panelChoice = new JComboBox();  // Set up the menu
      panelChoice.setBackground(Color.white);
      panelChoice.addItem("FlowLayout");   // Add in the names of the cards.
      panelChoice.addItem("FlowLayout with Big Hgap");
      panelChoice.addItem("Vertical BoxLayout");
      panelChoice.addItem("Horizontal BoxLayout with Struts");
      panelChoice.addItem("BorderLayout");
      panelChoice.addItem("GridLayout(3,2)");
      panelChoice.addItem("GridLayout(1,0)");
      panelChoice.addItem("GridLayout(0,1)");
      panelChoice.addItemListener(this);
     
      message = new JLabel("Layout Demo", JLabel.CENTER);  // Set up the mesage
      message.setBackground(Color.white);
      message.setOpaque(true);  // so background color will show
      message.setBorder(BorderFactory.createEmptyBorder(5,0,3,0));
      message.setForeground(Color.red);
     
      cardPanel = new JPanel();               // Set up the center panel
      cardPanel.setBackground(Color.white);
      cards = new CardLayout();
      cardPanel.setLayout(cards);
     
      setBackground(Color.blue);
      getContentPane().setBackground(Color.blue); 
      getContentPane().setLayout(new BorderLayout(3,3));   
      getContentPane().add("Center",cardPanel);
      getContentPane().add("North",panelChoice);
      getContentPane().add("South",message);
     
      JPanel panel;  // Will represent various cards to be added to the center panel.
      Box box;       // For the cards that use a BoxLayout.

      // Set up each "card" in the center panel to have its own layout
      // manager and to contain a variety of buttons.
     
      panel = new JPanel();
      // use default FlowLayout for panel
      panel.setBackground(Color.white);
      cardPanel.add(panel, "FlowLayout");
      addButton(panel,"First Button");  // ( addButton is a untility method, defined below )
      addButton(panel,"Second Button");
      addButton(panel,"Third Button");
      addButton(panel,"Fourth Button");
      addButton(panel,"Fifth Button");
      addButton(panel,"Sixth Button");
      addButton(panel,"Seventh Button");
           
      panel = new JPanel(); 
      panel.setLayout(new FlowLayout(FlowLayout.CENTER,30000,5));
      panel.setBackground(Color.white);
      cardPanel.add(panel,"FlowLayout with Big Hgap");
      addButton(panel," A Button");
      addButton(panel,"Another Button");
      addButton(panel,"A Third Button");
      addButton(panel,"A Fourth Button");
      addButton(panel,"A Final Button");

      box = Box.createVerticalBox(); 
      box.setBackground(Color.white);
      cardPanel.add(box,"Vertical BoxLayout");
      addButton(box,"Button One");
      addButton(box,"Button Two");
      addButton(box,"Button Three");
      addButton(box,"Button Four");
      addButton(box,"Button Five");
      addButton(box,"Button Six");

      box = Box.createHorizontalBox(); 
      box.setBackground(Color.white);
      cardPanel.add(box,"Horizontal BoxLayout with Struts");
      addButton(box,"1st");
      addButton(box,"2nd");
      box.add( Box.createHorizontalStrut(10) );
      addButton(box,"3rd");
      addButton(box,"4th");
      box.add( Box.createHorizontalStrut(10) );
      addButton(box,"5th");

      panel = new JPanel(); 
      panel.setLayout(new BorderLayout());
      panel.setBackground(Color.white);
      cardPanel.add(panel,"BorderLayout");
      addButton(panel,"Center Button", BorderLayout.CENTER);
      addButton(panel,"North Button", BorderLayout.NORTH);
      addButton(panel,"South Button", BorderLayout.SOUTH);
      addButton(panel,"East Button", BorderLayout.EAST);
      addButton(panel,"West Button", BorderLayout.WEST);
                 
      panel = new JPanel(); 
      panel.setLayout(new GridLayout(3,2));
      panel.setBackground(Color.white);
      cardPanel.add(panel,"GridLayout(3,2)");
      addButton(panel,"Button 1");                 
      addButton(panel,"Button 2");                 
      addButton(panel,"Button 3");                 
      addButton(panel,"Button 4");                 
      addButton(panel,"Button 5");                 
      addButton(panel,"Button 6");                 
     
      panel = new JPanel(); 
      panel.setLayout(new GridLayout(1,0));
      panel.setBackground(Color.white);
      cardPanel.add(panel,"GridLayout(1,0)");
      addButton(panel,"Button 1");                 
      addButton(panel,"Button 2");                 
      addButton(panel,"Button 3");                 
      addButton(panel,"Button 4");                 
     
      panel = new JPanel(); 
      panel.setLayout(new GridLayout(0,1));
      panel.setBackground(Color.white);
      cardPanel.add(panel,"GridLayout(0,1)");
      addButton(panel,"Button 1");                 
      addButton(panel,"Button 2");                 
      addButton(panel,"Button 3");                 
      addButton(panel,"Button 4");                 
      addButton(panel,"Button 5");                 
      addButton(panel,"Button 6");                 
     
   } // end init()


   public Insets getInsets() {
        // specify borders around the edges of the applet
      return new Insets(3,3,3,3);
   }
  
  
   void addButton(Container p, String name) {
          // Create a button with the given name and add it
          // to the given panel.  Set up the button to send
          // events to the applet.
      JButton b = new JButton(name);
      p.add(b);
      b.addActionListener(this);
   }
     

   void addButton(JPanel p, String name, Object option) {
          // Same as above, but use the "option" object
          // as an additional parameter in the add method.
      JButton b = new JButton(name);
      p.add(b, option);
      b.addActionListener(this);
   }
     

   public void actionPerformed(ActionEvent evt) {
         // A button was pressed.  Report the name
         // of the button by setting the message text.
      String buttonName = evt.getActionCommand();
      message.setText("Button \"" + buttonName + "\" was pressed.");
   }
  
   public void itemStateChanged(ItemEvent evt) {
         // The user has selected an item from the JComboBox.
         // Change the displayed card to match.
      String panelName = (String)panelChoice.getSelectedItem();
      cards.show(cardPanel, panelName);
      message.setText("Panel \"" + panelName + "\" was selected.");
   }

  
} // end class LayoutDemo

No comments: