탭팬
JTabbedPane
JTabbedPane은 여러 개의 패널을 겹치게 하여 출력 공간을 공유하는 탭팬을 구현합니다. 탭팬에 부착된 각 패널을 탭(tab)이라 부릅니다.
탭팬 만들기
탭팹을 만드는 과정은 단순합니다.
1. JTabbedPane 객체 생성
JTabbedPane pane = new JTabbedPane); // 탭 위치는 디폴트로 JTabbedPane.TOP
탭은 디폴트로 탭팬의 위쪽에 위치합니다. 텝 위치를 왼쪽에 부착하려면 다음과 같이합니다.
JTabbedPane pane = new JTabbedPane(JTabbedPane.LEFT); // 탭 위치를 왼쪽으로
2. 탭 만들어 붙이기
탭팬에 탭을 붙이는 작업은 JTabbedPane의 addTab() 메서드를 이용합니다. addTab()의 첫 번째 인자는 탭의 타이틀이며, 두 번째 인자는 탭에 출력될 컴포넌트입니다. 다음은 타이틀이 "tab1"이고 img1.jpg 이미지를 가진 레이블 컴포넌트로 가진 탭을 만들어 탬팬에 부착하는 코드입니다.
// img1.jpg 이미지 레이블을 가진 tab1
pane.addTab("tab1", new JLabel(new ImageIcon("images/img1.jpg")));
탭에는 기본적으로 컴포넌트 하나만 붙일 수 있습니다. 여러 개의 컴포넌트를 하나의 탭을 담고자 하면, 다음 코드처럼 패널을 여러 컴포넌트를 담으면 됩니다.
class MyPanel extends JPanel {
..................
// 여러 컴포넌트를 붙인다.
..................
}
...................
pane.addTab("tab3", new MyPanel()); // MyPanel 객체를 컴퍼넌트로 가진 tab3
탬팬 만들기
import javax.swing.*;
import java.awt.*;
public class TabbedPaneEx extends JFrame {
public TabbedPaneEx() {
setTitle("탭팬 만들기 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
JTabbedPane pane = createTabbedPane(); // 탭팬을 생성한다.
c.add(pane, BorderLayout.CENTER); // 탭팬을 컨텐트팬에 부착합니다.
setSize(250, 250);
setVisible(true);
}
// 탭팬을 생성하고 3개의 탭을 생성하여 부착한다.
private JTabbedPane createTabbedPane() {
JTabbedPane pane = new JTabbedPane(); // 탭팬 객체를 생성한다.
pane.addTab("tab1", new JLabel(new ImageIcon("images/img1.jpg"))); // 첫 번째 탭
pane.addTab("tab2", new JLabel(new ImageIcon("images/img2.jpg"))); // 두 번째 탭
pane.addTab("tab3", new MyPanel()); // 세 번째 탭
return pane;
}
// 3번째 탬의 컴포넌트로 사용될 패넣
class MyPanel extends JPanel {
public MyPanel() {
this.setBackground(Color.YELLOW);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(10, 10, 50, 50);
g.setColor(Color.BLUE);
g.fillOval(10, 70, 50, 50);
g.setColor(Color.BLACK);
g.drawString("tab 3에 들어가는 JPanel 입니다.", 30, 50);
}
}
public static void main(String[] args) {
new TabbedPaneEx();
}
}
[실행결과]


