// Fig. 12.24: FlowLayoutDemo.java

// Demonstrating FlowLayout alignments.

 

// Java core packages

import java.awt.*;

import java.awt.event.*;

 

// Java extension packages

import javax.swing.*;

 

public class FlowLayoutDemo extends JFrame {

   private JButton leftButton, centerButton, rightButton;

   private Container container;

   private FlowLayout layout;

   

   // set up GUI and register button listeners

   public FlowLayoutDemo()

   {

      super( "FlowLayout Demo" );

 

      layout = new FlowLayout();

 

      // get content pane and set its layout

      container = getContentPane();

      container.setLayout( layout );

 

      // set up leftButton and register listener

      leftButton = new JButton( "Left" );

 

      leftButton.addActionListener(

 

         // anonymous inner class

         new ActionListener() {

 

            // process leftButton event  

            public void actionPerformed( ActionEvent event )

            {

               layout.setAlignment( FlowLayout.LEFT );

 

               // re-align attached components

               layout.layoutContainer( container );

            }

 

         }  // end anonymous inner class

 

      ); // end call to addActionListener

 

      container.add( leftButton );

 

      // set up centerButton and register listener

      centerButton = new JButton( "Center" );

 

      centerButton.addActionListener(

 

         // anonymous inner class

         new ActionListener() {

 

            // process centerButton event  

            public void actionPerformed( ActionEvent event )

            {

               layout.setAlignment( FlowLayout.CENTER );

 

               // re-align attached components

               layout.layoutContainer( container );

            }

         }

      );

 

      container.add( centerButton );

 

      // set up rightButton and register listener

      rightButton = new JButton( "Right" );

 

      rightButton.addActionListener(

 

         // anonymous inner class

         new ActionListener() {

 

            // process rightButton event  

            public void actionPerformed( ActionEvent event )

            {

               layout.setAlignment( FlowLayout.RIGHT );

 

               // re-align attached components

               layout.layoutContainer( container );

            }

         }

      );

 

      container.add( rightButton );

 

      setSize( 300, 75 );

      setVisible( true );

   }

  

   // execute application

   public static void main( String args[] )

   { 

      FlowLayoutDemo application = new FlowLayoutDemo();

 

      application.addWindowListener(new WindowAdapter()

                                { public void windowClosing( WindowEvent event )

                                    {

                                          System.exit( 0 );

                                    }

 

                              }

                  );

   }

 

}  // end class FlowLayoutDemo


-------------------------------------------------------------------------------------------------------------------
//  BorderLayoutDemo.java
// Demonstrating BorderLayout.

// Java core packages
import java.awt.*;
import java.awt.event.*;

// Java extension packages
import javax.swing.*;

public class BorderLayoutDemo extends JFrame
   implements ActionListener {

   private JButton buttons[];
   private String names[] = { "Hide North", "Hide South", 
      "Hide East", "Hide West", "Hide Center" };
   private BorderLayout layout;

   // set up GUI and event handling
   public BorderLayoutDemo()
   {
      super( "BorderLayout Demo" );

      layout = new BorderLayout( 5, 5 );

      // get content pane and set its layout
      Container container = getContentPane();
      container.setLayout( layout );

      // instantiate button objects
      buttons = new JButton[ names.length ];

      for ( int count = 0; count < names.length; count++ ) {
         buttons[ count ] = new JButton( names[ count ] );
         buttons[ count ].addActionListener( this );
      }

      // place buttons in BorderLayout; order not important
      container.add( buttons[ 0 ], BorderLayout.NORTH ); 
      container.add( buttons[ 1 ], BorderLayout.SOUTH ); 
      container.add( buttons[ 2 ], BorderLayout.EAST );  
      container.add( buttons[ 3 ], BorderLayout.WEST );  
      container.add( buttons[ 4 ], BorderLayout.CENTER ); 

      setSize( 300, 200 );
      setVisible( true );
   } 

   // handle button events
   public void actionPerformed( ActionEvent event )
   {
      for ( int count = 0; count < buttons.length; count++ )

         if ( event.getSource() == buttons[ count ] )
            buttons[ count ].setVisible( false );
         else
            buttons[ count ].setVisible( true );

      // re-layout the content pane
      layout.layoutContainer( getContentPane() );
   }

   // execute application
   public static void main( String args[] )
   { 
      BorderLayoutDemo application = new BorderLayoutDemo();

      application.setDefaultCloseOperation(
         JFrame.EXIT_ON_CLOSE );
   }

}  // end class BorderLayoutDemo

--------------------------------------------------------------------------------------------------------------------

// Fig. 12.26: GridLayoutDemo.java
// Demonstrating GridLayout.

// Java core packages
import java.awt.*;
import java.awt.event.*;

// Java extension packages
import javax.swing.*;

public class GridLayoutDemo extends JFrame
   implements ActionListener {

   private JButton buttons[];
   private String names[] =
      { "one", "two", "three", "four", "five", "six" };
   private boolean toggle = true;
   private Container container;
   private GridLayout grid1, grid2;

   // set up GUI
   public GridLayoutDemo()
   {
      super( "GridLayout Demo" );

      // set up layouts
      grid1 = new GridLayout( 2, 3, 5, 5 );
      grid2 = new GridLayout( 3, 2 );

      // get content pane and set its layout
      container = getContentPane();
      container.setLayout( grid1 );

      // create and add buttons
      buttons = new JButton[ names.length ];

      for ( int count = 0; count < names.length; count++ ) {
         buttons[ count ] = new JButton( names[ count ] );
         buttons[ count ].addActionListener( this );
         container.add( buttons[ count ] );
      }

      setSize( 300, 150 );
      setVisible( true );
   }

   // handle button events by toggling between layouts
   public void actionPerformed( ActionEvent event )
   { 
      if ( toggle )
         container.setLayout( grid2 );
      else
         container.setLayout( grid1 );

      toggle = !toggle;   // set toggle to opposite value
      container.validate();
   }

   // execute application
   public static void main( String args[] )
   {
      GridLayoutDemo application = new GridLayoutDemo();

      application.setDefaultCloseOperation(
         JFrame.EXIT_ON_CLOSE );
   } 

}  // end class GridLayoutDemo

-------------------------------------------------------------------------------------------------------------------


// Fig. 12.27: PanelDemo.java
// Using a JPanel to help lay out components.

// Java core packages
import java.awt.*;
import java.awt.event.*;

// Java extension packages
import javax.swing.*;

public class PanelDemo extends JFrame {
   private JPanel buttonPanel;
   private JButton buttons[];

   // set up GUI
   public PanelDemo()
   {
      super( "Panel Demo" );

      // get content pane
      Container container = getContentPane();

      // create buttons array
      buttons = new JButton[ 5 ];

      // set up panel and set its layout
      buttonPanel = new JPanel();
      buttonPanel.setLayout(
         new GridLayout( 1, buttons.length ) );

      // create and add buttons
      for ( int count = 0; count < buttons.length; count++ ) {
         buttons[ count ] = 
            new JButton( "Button " + ( count + 1 ) );
         buttonPanel.add( buttons[ count ] );
      }

      container.add( buttonPanel, BorderLayout.SOUTH );

      setSize( 425, 150 );
      setVisible( true );
   }

   // execute application
   public static void main( String args[] )
   {
      PanelDemo application = new PanelDemo();

      application.setDefaultCloseOperation(
         JFrame.EXIT_ON_CLOSE );
   }

}  // end class PanelDemo