JTable은 JComponent 클래스의 하위 클래스로, 여러 행과 열에 걸쳐 정보를 표시하는 테이블을 생성하는 데 사용됩니다. JTable에서 값이 선택되면 TableModelEvent가 발생하며, 이 이벤트는 TableModelListener 인터페이스를 구현하여 처리할 수 있습니다.
일반적으로 사용자는 마우스나 키보드를 이용해 JTable의 행과 열을 직접 선택하지만, 코드로도 특정 셀을 자동으로 선택할 수 있습니다. 바로 JTable 클래스에서 제공하는 setRowSelectionInterval()과 setColumnSelectionInterval() 메서드를 활용하는 방식입니다.
주요 메서드 설명
setRowSelectionInterval(int index0, int index1) : index0부터 index1까지의 행을 선택 범위로 지정합니다.
setColumnSelectionInterval(int index0, int index1) : index0부터 index1까지의 열을 선택 범위로 지정합니다.
두 메서드에 동일한 인덱스를 전달하면 단일 행 또는 단일 열만 선택되며, 서로 다른 값을 전달하면 해당 범위 전체가 한 번에 선택됩니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTableCellSelectionTest extends JFrame {
private JTable table;
public JTableCellSelectionTest() {
setTitle("JTableCellSelection Test");
Object[][] data = {
{ "Raja", "Java", "Hyderabad" },
{ "Vineet", "JavaScript", "Bangalore" },
{ "Adithya", "Scala", "Chennai" },
{ "Jai", "ServiceNow", "Pune" },
{ "Chaitanya", "Python", "Noida" },
{ "Krishna", "AI", "Mumbai" }
};
String columns[] = { "Name", "Technology", "Location" };
table = new JTable(data, columns);
add(new JScrollPane(table));
// 0행부터 2행까지, 0열부터 2열까지 프로그래밍 방식으로 선택
table.setRowSelectionInterval(0, 2);
table.setColumnSelectionInterval(0, 2);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String []args) {
new JTableCellSelectionTest();
}
}실행 결과
프로그램을 실행하면 테이블이 화면에 표시되고, 사용자가 아무런 조작을 하지 않았음에도 불구하고 첫 번째 행부터 세 번째 행까지, 그리고 모든 열에 해당하는 셀들이 미리 선택된 상태로 나타납니다.

참고 사항
사용자가 마우스로 개별 셀을 자유롭게 선택할 수 있도록 하려면 setCellSelectionEnabled(true)를 호출하여 셀 단위 선택 모드를 활성화하는 것이 좋습니다. 또한 위 예제처럼 행과 열의 선택 범위를 동시에 지정하면 두 범위가 교차하는 사각형 영역의 셀들이 일괄 선택되므로, 데이터 강조나 초기 포커스 지정 등에 유용하게 활용할 수 있습니다.