Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java JTable에서 행마다 배경색을 번갈아 적용하는 방법

JTableJComponent 클래스의 하위 클래스로, 정보를 여러 행(row)열(column) 형태로 표시하는 테이블을 만들 때 사용됩니다. JTable에서 값이 선택되면 TableModelEvent가 발생하며, 이 이벤트는 TableModelListener 인터페이스를 구현하여 처리할 수 있습니다.

JTable에서 행마다 배경색을 번갈아 적용(줄무늬 효과)하려면 JTable 클래스의 prepareRenderer() 메서드를 재정의하면 됩니다. 이 메서드는 각 셀이 화면에 렌더링되기 전에 호출되므로, 행 번호를 기준으로 조건부로 배경색을 지정하기에 가장 적합한 위치입니다.

문법

public Component prepareRenderer(TableCellRenderer renderer, int row, int column)

매개변수는 각각 사용할 렌더러, 그리고 렌더링할 셀의 행 인덱스와 열 인덱스를 나타내며, 반환값은 실제로 화면에 그려지는 컴포넌트입니다.

예제

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class AlternateRowColorTableTest extends JFrame {
   public AlternateRowColorTableTest() {
      setTitle("AlternateRowColorTable Test");
      JTable table = new JTable(
         new Object[][] {{"115", "Ramesh"}, {"120", "Adithya"}, {"125", "Jai"}, {"130", "Chaitanya"}, {"135", "Raja"}},
         new String[] {"Employee Id", "Employee Name"}
      ) {
         @Override
         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
            Component comp = super.prepareRenderer(renderer, row, column);
            Color alternateColor = new Color(200, 201, 210); // 연회색
            Color whiteColor = Color.WHITE;
            // 선택된 셀은 원래 선택 배경색을 유지
            if (!comp.getBackground().equals(getSelectionBackground())) {
               Color c = (row % 2 == 0 ? alternateColor : whiteColor);
               comp.setBackground(c);
            }
            return comp;
         }
      };
      add(new JScrollPane(table));
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new AlternateRowColorTableTest();
   }
}

코드 설명

위 예제에서는 익명 내부 클래스 방식으로 JTable을 생성하면서 prepareRenderer()를 재정의했습니다. 핵심 로직은 다음과 같습니다.

  • row % 2 == 0 조건으로 짝수 행에는 alternateColor(연회색), 홀수 행에는 흰색을 배경으로 지정합니다.
  • getSelectionBackground()와 비교하여 현재 선택된 셀인 경우에는 색상을 덮어쓰지 않으므로, 사용자가 행을 선택했을 때도 선택 강조 표시가 정상적으로 유지됩니다.

실행 결과

프로그램을 실행하면 아래와 같이 직원 ID와 이름 목록이 회색과 흰색이 번갈아 나타나는 줄무늬 형태로 표시되어, 데이터가 많은 테이블에서도 각 행을 훨씬 쉽게 구분하고 읽을 수 있습니다.

Java JTable에서 행마다 배경색을 번갈아 적용하는 방법