您的位置:首页 > 其它

一个卡片布局(CardLayout)的好例子

2010-09-29 15:42 183 查看
一个卡片布局(CardLayout)的好例子



package test;

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

public class CardDeck extends JFrame 
                      implements ActionListener { 
   public CardLayout cardManager; 
   public JPanel deck; 
   private JButton controls[]; 
   private String names[] = { "First card", "Next card", 
                              "Previous card", "Last card" }; 

   public CardDeck() 
   { 
      super( "CardLayout " ); 

      Container c = getContentPane(); 

      // create the JPanel with CardLayout 
      deck = new JPanel(); 
      cardManager = new CardLayout();  
      deck.setLayout( cardManager );   

      // set up card1 and add it to JPanel deck 
      JLabel label1 = 
         new JLabel( "card one", SwingConstants.CENTER ); 
      JPanel card1 = new JPanel(); 
      card1.add( label1 );  
      deck.add( card1, label1.getText() ); // add card to deck 
       
      // set up card2 and add it to JPanel deck 
      JLabel label2 = 
         new JLabel( "card two", SwingConstants.CENTER ); 
      JPanel card2 = new JPanel(); 
      card2.setBackground( Color.yellow ); 
      card2.add( label2 ); 
      deck.add( card2, label2.getText() ); // add card to deck 

      // set up card3 and add it to JPanel deck 
      JLabel label3 = new JLabel( "card three" ); 
      JPanel card3 = new JPanel(); 
      card3.setLayout( new BorderLayout() );   
      card3.add( new JButton( "North" ), BorderLayout.NORTH ); 
      card3.add( new JButton( "West" ), BorderLayout.WEST ); 
      card3.add( new JButton( "East" ), BorderLayout.EAST ); 
      card3.add( new JButton( "South" ), BorderLayout.SOUTH ); 
      card3.add( label3, BorderLayout.CENTER ); 
      deck.add( card3, label3.getText() ); // add card to deck 
//      deck.remove(1);
//      deck.add(card3,"efef", 1);

      // create and layout buttons that will control deck 
      JPanel buttons = new JPanel(); 
      buttons.setLayout( new GridLayout( 2, 2 ) ); 
      controls = new JButton[ names.length ]; 

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

      // add JPanel deck and JPanel buttons to the applet 
      c.add( buttons, BorderLayout.WEST ); 
      c.add( deck, BorderLayout.EAST ); 
      setVisible(true);
      setSize( 450, 200 ); 
   } 

   public void actionPerformed( ActionEvent e ) 
   { 
      if ( e.getSource() == controls[ 0 ] )     
         cardManager.first( deck ); // show first card 
      else if ( e.getSource() == controls[ 1 ] )     
         cardManager.next( deck );  // show next card 
      else if ( e.getSource() == controls[ 2 ] ) 
         cardManager.previous( deck );  // show previous card 
      else if ( e.getSource() == controls[ 3 ] ) 
         cardManager.last( deck );  // show last card             
   } 

   public static void main( String args[] ) 
   { 
      CardDeck cardDeckDemo = new CardDeck(); 
      cardDeckDemo.cardManager.last(cardDeckDemo.deck);
      cardDeckDemo.addWindowListener( 
         new WindowAdapter() { 
            public void windowClosing( WindowEvent e ) 
            { 
               System.exit( 0 ); 
            } 
         } 
      ); 
   } 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: