1. CardLayout 소개
- 화면을 설계하는데 있어서 여러 가지 화면을 한 프레임 안에서 동작시키고 싶을 때 사용하면 유용하다.
- CardLayout은 마치 카드놀이와 비슷하다. 제일 위에 있는 카드만 보이고 나머지는 보이지 않는다.
- 카드를 사용하는 방법은 다음과 같다.
2. CardLayout 메소드 (카드 뽑기)
first (Container parent) | 컨테이너 안에 첫번째 카드를 뽑는다. |
next (Container parent) | 컨테이너의 다음 카드를 뽑는다. 카드가 마지막 카드라면 첫번 째 카드를 뽑는다. |
previous (Container parent) | 컨테이너의 이전 카드를 뽑는다. 현재 카드가 첫번째 카드라면 마지막 카드를 뽑는다. |
last (Container parent) | 컨테이너의 마지막 카드를 뽑는다. |
show (Container parent , String name) | addLayoutComponent 메소드를 이용해, 이 레이아웃에 추가된 name(이름을) 이용해 카드를 뽑는다. |
3. CardLayout을 이용한 패널 바꾸기 코드
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class CardLayoutDemo extends JPanel {
public CardLayoutDemo() {
//카드를 담을 카드덱
JPanel cards = new JPanel(new CardLayout());
// 패널1
JPanel card1 = new JPanel();
JButton nextButton = new JButton("Next");
TitledBorder border1 = new TitledBorder(new LineBorder(Color.black),"This is Panel 1!", TitledBorder.CENTER,TitledBorder.BELOW_TOP);
card1.setBorder(border1);
card1.add(nextButton);
// 패널2
JPanel card2 = new JPanel();
JButton previousButton = new JButton("Previous");
TitledBorder border2 = new TitledBorder(new LineBorder(Color.black),"This is Panel 2!", TitledBorder.CENTER,TitledBorder.BELOW_TOP);
card2.setBorder(border2);
card2.add(previousButton);
// CardLayout에 패널들 추가
cards.add(card1, "Panel1");
cards.add(card2, "Panel2");
// 전체에 추가
add(cards);
// 화면 레이아웃 가져오기
CardLayout cl = (CardLayout) cards.getLayout();
nextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
cl.next(cards);
}
});
previousButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
cl.previous(cards);
}
});
}
private static void createAndShowGUI() {
// Create and set up the window.
JFrame frame = new JFrame("Image Processing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardLayoutDemo cardDemo = new CardLayoutDemo();
cardDemo.setOpaque(true);
frame.setContentPane(cardDemo);
// Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
4. 코드 실행화면
코드에 패널을 추가해서 메소드를 활용해보거나, first last show 메소드도 활용해보길 바랍니다.
여러분들이 CardLayout에 대한 이해에 도움이 됐다면 다행입니다.
'JAVA' 카테고리의 다른 글
[Java] 오셀로, 체스 게임 UI 만들기 (0) | 2022.04.25 |
---|---|
[Java] 색상에서 value & 0xff 의미 쉽게 이해하기 (0) | 2022.04.21 |
[Java] 자바로 그림판 만들기(펜, 도형, 파일 읽기 쓰기, 색깔, 굵기) (0) | 2022.04.18 |
[Java] 이클립스와 Mysql 8.0 연동하기 (JDBC 연결) (1) | 2022.04.16 |
[Java] 버튼의 이벤트 처리로 선 그리기 (0) | 2022.04.15 |