JTabbedPane은 JComponent 클래스의 하위 클래스로, 여러 개의 패널에 손쉽게 접근할 수 있도록 도와주는 스윙(Swing) 컴포넌트입니다. 각 탭은 하나의 컴포넌트와 연결되어 있으며, 해당 탭이 선택되면 연결된 컴포넌트가 화면에 표시됩니다. 또한 JTabbedPane은 탭이 선택될 때 ChangeListener 인터페이스를 통해 이벤트를 발생시킬 수 있습니다.
UIManager를 이용한 선택 탭 강조 표시
선택된 탭을 특정 색상으로 강조하고 싶다면 UIManager 클래스의 정적 메서드인 put()을 사용하면 됩니다. 아래 예제에서는 "TabbedPane.selected" 키에 원하는 색상을 지정하여 선택된 탭의 배경색을 회색으로 변경합니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SelectedJTabbedPaneTest extends JFrame implements ActionListener {
private JTabbedPane tabbedPane;
int tab = 0;
public SelectedJTabbedPaneTest() {
setTitle("SelectedJTabbedPane Test");
setLayout(new BorderLayout());
// 선택된 탭의 색상을 회색으로 설정
UIManager.put("TabbedPane.selected", Color.gray);
tabbedPane = new JTabbedPane();
createTab();
add(tabbedPane, BorderLayout.CENTER);
setJMenuBar(createMenuBar());
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("JTabbedPane");
JMenuItem menuItem = new JMenuItem("Create a new tab");
menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
return menuBar;
}
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Create a new tab")) {
createTab();
}
}
public void createTab() {
tab++;
tabbedPane.addTab("Tab " + tab, new JLabel("Tab " + tab));
}
public static void main(String []args) {
new SelectedJTabbedPaneTest();
}
}코드 설명
- UIManager.put("TabbedPane.selected", Color.gray): 스윙의 UI 기본 설정값을 변경하여 선택된 탭의 배경색을 회색으로 지정합니다. 이 코드는 반드시 JTabbedPane 객체가 생성되기 전에 호출해야 합니다.
- createTab(): 새로운 탭을 생성하고 번호를 붙여 추가하는 메서드입니다.
- 메뉴바: 'Create a new tab' 메뉴 항목을 클릭하면 ActionListener를 통해 새 탭이 동적으로 추가됩니다.
실행 결과
프로그램을 실행하면 현재 선택된 탭이 회색으로 강조 표시되는 것을 확인할 수 있습니다. 메뉴에서 새 탭을 추가해도 선택된 탭은 동일한 방식으로 강조됩니다.