반응형
JTable에서 AUTO_RESIZE_LAST_COLUMN를 사용하여 남은 공간을 마지막 컬럼으로 몰아주는 방법

Swing의 JTable에서 특정 컬럼만 고정 너비로 유지하고, 나머지 여유 공간을 마지막 컬럼이 모두 채우게 하고 싶을 때가 있는데

이럴 때 유용하게 사용할 수 있는 모드가 바로 AUTO_RESIZE_LAST_COLUMN 이다.

 

 

◆ AUTO_RESIZE_LAST_COLUMN


AUTO_RESIZE_LAST_COLUMN 모드는 테이블 전체 너비가 변하더라도 마지막 컬럼만 남은 여유 공간을 채우도록 동작한다.

이 모드를 적용하면 컬럼 간 비율을 일일이 계산하지 않아도 되고, 윈도우 크기를 조정해도 원하는 레이아웃이 유지된다.

 

예를 들어, 첫 번째·두 번째 컬럼에는 중요한 정보가 들어가서 항상 동일한 너비로 고정해야 할 때, 마지막(세 번째) 컬럼은 가변적으로 늘어났다 줄어들었다 하면서 나머지 영역을 모두 사용하도록 할 수 있다.

 

◆ 사용 예제


다음 예제는 세 개의 컬럼을 가진 JTable을 생성한 뒤, “첫 번째”와 “두 번째” 컬럼 너비를 각각 40px, 45px로 고정하고 마지막(세 번째) 컬럼이 나머지 모든 공간을 차지하게끔 AUTO_RESIZE_LAST_COLUMN을 설정한 코드이다.

 

Vector<String> userColumn = new Vector<String>();
userColumn.addElement("순서");
userColumn.addElement("결과");
userColumn.addElement("문제 / 작성한 답");

DefaultTableModel model = new DefaultTableModel(userColumn, 0);
JTable resultTable = new JTable(model);
resultTable.setCellSelectionEnabled(true);
resultTable.setColumnSelectionAllowed(true);

JScrollPane scrollPane = new JScrollPane(resultTable);
scrollPane.setBounds(14, 217, 384, 165);

JPanel contentPane = new JPanel();
contentPane.add(scrollPane);

resultTable.getColumn("순서").setMaxWidth(40);
resultTable.getColumn("결과").setMaxWidth(45);
resultTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
              
scrollPane.setViewportView(resultTable);
resultTable.setVisible(true);
contentPane.setVisible(true);

첫번째 컬럼: 너비 40px로 항상 고정
두번째 컬럼: 너비 45px로 항상 고정
세번째 컬럼: 테이블 전체 너비(400px)에서 40 + 45 = 85px를 제외한 나머지 315px를 전부 할당

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형