CardLayout 른 여러 개의 카드를 쌓아 보여주는 레이아웃입니다.

  1. 카드 레이아웃은 컨테이너의 각 구성 요소를 카드로 취급합니다. 
  2. 한 번에 하나의 카드만 보이며, 컨테이너는 일련의 카드 역할을 합니다. 
  3. 카드 레이아웃에 추가된 첫 번째 구성 요소는 컨테이너가 처음 표시 될 때 보이는 구성 요소입니다.
    (Next 메소드를 이용해 다음 화면을 출력합니다.)


매개변수:

CardLayout()
기본 레이아웃을 설정합니다.

CardLayout(int hgap, int vgap);
가로 세로 여백을 설정합니다.


// ex.1)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame; 
 
 
public class Ex04 extends JFrame implements ActionListener{
    Container c;
    CardLayout card;
    JButton btn1, btn2, btn3;
    Ex04() {
        c = getContentPane();
        // 가로 세로 여백을 각각 10으로 설정합니다.
        card = new CardLayout(10, 10);
        c.setLayout(card);
         
        // 사과, 배, 바나나 버튼을 겹칩니다.
        // 사과를 클릭하면 배가 나오고, 
        // 배를 클릭하면 바나나가 출력됩니다.
        btn1 = new JButton("사과");
        btn2 = new JButton("배");
        btn3 = new JButton("바나나");
         
        // 버튼을 클릭했을 때 액션을 설정합니다.
        btn1.addActionListener(this);
        btn2.addActionListener(this);
        btn3.addActionListener(this);
        c.add("이전", btn1);
        c.add("다음", btn2);
        c.add("현재", btn3);
         
         
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(500, 500);
         
    }
    public static void main(String[] args) {         
        Ex04 c = new Ex04();
        c.setSize(400, 400);
        c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c.setVisible(true);
    } 
    // 사용자가 버튼을 클릭했을 때 
    // 다음 화면으로 전환시킵니다.
    @Override
    public void actionPerformed(ActionEvent e) {
        card.next(c);       
    }
} 


다음은 버튼을 눌렀을 때 equals 로 버튼 이름을 비교해서 다른 반응을 설정할 수 있습니다. 버튼 반응 설정은 actionPerformed() 함수에서 조절할 수 있습니다.
 

// ex.2)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame; 
 
 
public class Ex04 extends JFrame implements ActionListener{
    Container c;
    CardLayout card;
    JButton btn1, btn2, btn3;
    Ex04() {
        c = getContentPane();
        // 가로 세로 여백을 각각 10으로 설정합니다.
        card = new CardLayout(10, 10);
        c.setLayout(card);
         
        // 사과, 배, 바나나 버튼을 겹칩니다.
        // 사과를 클릭하면 배가 나오고, 
        // 배를 클릭하면 바나나가 출력되는 레이아웃입니다.
        btn1 = new JButton("사과");
        btn2 = new JButton("배");
        btn3 = new JButton("바나나");
         
        // 버튼을 클릭했을 때 액션을 설정합니다.
        btn1.addActionListener(this);
        btn2.addActionListener(this);
        btn3.addActionListener(this);
        // 임의의 이름을 지정합니다.
        c.add("a", btn1);
        c.add("b", btn2);
        c.add("c", btn3);
         
         
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(500, 500);
         
    }
    public static void main(String[] args) {         
        Ex04 c = new Ex04();
        c.setSize(400, 400);
        c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c.setVisible(true);
    } 
    // 사용자가 버튼을 클릭했을 때 
    // 다음 화면으로 전환시킵니다.
    @Override
    public void actionPerformed(ActionEvent e) {
        String str = e.getActionCommand();
        // 사과 버튼을 선택했을 때 메시지
        if(str.equals("사과")) {
            System.out.println("사과입니다.");
        // 배 버튼을 선택했을 때 메시지
        }else if(str.equals("배")) {
            System.out.println("배입니다.");
        }else {
        // 바나나 버튼을 선택했을 때 메시지
            System.out.println("바나나입니다.");
        }
        card.next(c);       
    }
}


0 댓글