자바 스윙 카드 레이아웃 구현 예시

1.개술
공식 자바 DocsApi:javax.swing.CardLayout
카드 레이아웃 관리자.용기 에 있 는 모든 구성 요 소 를 카드 로 보고 한 번 에 한 장의 카드 만 볼 수 있 으 며,용 기 는 카드 의 스 택 으로 사용 되 며,기본적으로 첫 번 째 카드 를 표시 합 니 다.
CardLayout 구조 방법:

//           0      
CardLayout()

//         /           。
CardLayout(int hgap, int vgap) 

CardLayout 상용 방법:

//        
void first(Container parent);

//         
void last(Container parent);

//        (      )
void next(Container parent);

//        (      )
void previous(Container parent);

//          (        ,          )
void show(Container parent, String name);
2.코드 인 스 턴 스

package com.xiets.swing;

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

public class Main {

  public static void main(String[] args) {
    JFrame jf = new JFrame("    ");
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    jf.setSize(300, 200);

    //       ,            10
    final CardLayout layout = new CardLayout(10, 10);

    //         ,       
    final JPanel panel = new JPanel(layout);

    JButton btn01 = new JButton("Button01");
    JButton btn02 = new JButton("Button02");
    JButton btn03 = new JButton("Button03");

    panel.add(btn01, "btn01");
    panel.add(btn02, "btn02");
    panel.add(btn03, "btn03");

    //       
    layout.show(panel, "btn02");

    jf.setContentPane(panel);
    jf.setLocationRelativeTo(null);
    jf.setVisible(true);

    //    2        
    new Timer(2000, new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        layout.next(panel);
      }
    }).start();
  }

}

결과 전시:
 
인 스 턴 스 1:카드 전환
창 기본 경계 레이아웃 입 니 다.한 판 넬 은 카드 레이아웃 으로 판 넬 에 다섯 개의 단 추 를 추가 합 니 다.이 판 넬 은 CENTER 위치 에 추가 되 고 다른 판 넬 은 두 개의 단 추 를 추가 합 니 다.두 단 추 는 이 벤트 를 추가 하여 CENTER 위 치 를 표시 하 는 판 넬 의 구성 요 소 를 전환 합 니 다.

// cardlayout.Java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//     

 

//          

public class cardlayout extendsJFrame implements ActionListener{

     JButton nextbutton;

     JButton preButton;

  Panel cardPanel=new Panel();

  Panel controlpaPanel=new Panel();

     //        

  CardLayout card=new CardLayout();

     //      

     public cardlayout() {

          super("       ");

          setSize(300, 200);

          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          setLocationRelativeTo(null);

          setVisible(true);

 

          //  cardPanel         

          cardPanel.setLayout(card);  

 

          //  , cardPanel           

          //  cardPanel         ,            

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

              cardPanel.add(new JButton("  "+i));

          }

          //       

          nextbutton=new JButton("     ");

          preButton=new JButton("     ");

 

          //          

          nextbutton.addActionListener(this);

          preButton.addActionListener(this);

 

          controlpaPanel.add(preButton);

          controlpaPanel.add(nextbutton);

 

          //               

          Container container=getContentPane();

 

          //  cardPanel              ,         

          container.add(cardPanel,BorderLayout.CENTER);

          //  controlpaPanel              ,

          container.add(controlpaPanel,BorderLayout.SOUTH);

     }

 

     //             

     public void actionPerformed(ActionEvent e){

          //      nextbutton,     

          if (e.getSource()==nextbutton){

              //  cardPanel              

              //             ,        ,           。

              card.next(cardPanel);   

          }

          if (e.getSource()==preButton){

              //  cardPanel              

              //              ,         ,           。

              card.previous(cardPanel);

          }

     }

     public static void main(String[] args) {

          cardlayout kapian=new cardlayout();
    }
 }
프로그램 표시 결 과 는 다음 그림 과 같 습 니 다.'이전','다음'등 단 추 를 누 르 면 위 판 넬 에 다른 단 추 를 표시 할 수 있 습 니 다.
인 스 턴 스 2:CardLayout 류 의 show 방법 으로 구성 요 소 를 표시 합 니 다.
창 기본 경계 레이아웃 입 니 다.한 판 넬 은 카드 레이아웃 으로 판 넬 에 4 개의 단 추 를 추가 합 니 다.이 판 넬 은 CENTER 위치 에 추가 되 고 다른 판 넬 은 4 개의 단 추 를 추가 합 니 다.이 4 개의 단 추 는 이 벤트 를 추가 하여 CENTER 위 치 를 표시 하 는 판 넬 의 구성 요소 단 추 를 전환 합 니 다.

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

//           

public class cardlayout1 extends JFrameimplements ActionListener{

     JButton b0,b1,b2,b3;

  Panel cardPanel=new Panel();

  Panel controlpaPanel=newPanel();

     //        

  CardLayout card=newCardLayout();

     //      ,     

     StringcardName[]={"0","1","2","3"};

     //      

     public cardlayout1() {

          super("       ");

          setSize(400,200);

          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          setLocationRelativeTo(null);

          setVisible(true);

 

          //  cardPanel         

          cardPanel.setLayout(card);  

 

          //  , cardPanel       4   

          //  cardPanel         ,              

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

              //                   

              cardPanel.add(cardName[i],newJButton("  "+i));

          }

          //       

          b0=newJButton("0");

          b1=newJButton("1");

          b2=newJButton("2");

          b3=newJButton("3");

 

          //          

          b0.addActionListener(this);

          b1.addActionListener(this);

          b2.addActionListener(this);

          b3.addActionListener(this);

 

          controlpaPanel.add(b0);

          controlpaPanel.add(b1);

          controlpaPanel.add(b2);

          controlpaPanel.add(b3);

          //               

          Containercontainer=getContentPane();

 

          //  cardPanel              ,         

          container.add(cardPanel,BorderLayout.CENTER);

          //  controlpaPanel              ,

          container.add(controlpaPanel,BorderLayout.SOUTH);

     }

 

     //             

     public voidactionPerformed(ActionEvent e){

          //    b0        

          if(e.getSource()==b0){

              //  show()        ,        。

              card.show(cardPanel,cardName[0]);   

          }

          if(e.getSource()==b1){

              card.show(cardPanel,cardName[1]);   

          }

          if(e.getSource()==b2){

              card.show(cardPanel,cardName[2]);   

          }

          if(e.getSource()==b3){

              card.show(cardPanel,cardName[3]);   

          }

     }

     public static voidmain(String[] args) {

          cardlayout1kapian=new cardlayout1();
    }
 }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기