Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JTable에서 row별로 색깔을 달리할 수 있는 방법

2,706 views
Skip to first unread message

김동균

unread,
Jun 30, 2000, 3:00:00 AM6/30/00
to
Jtable에서 특별한 데이타를 갖는 row에 대해서는 색깔을 달리하고 싶은데
방법이 없을까요?

부나비

unread,
Jul 2, 2000, 3:00:00 AM7/2/00
to
님께서 말씀하시는 기능은 JTable에서 하는것이 아니고 TableCellRenderer가 담당하고
있습니다. 이 renderer를 이용해서, 특정한 데이터 타입별로 cell의 모습을 변경시킬수
있습니다.

첫번째로 할수 있는 방법은 일단 JTable을 생성하시면 javax.swing.table.DefaultTableCellRenderer을
얻을수 있습니다. 이 default renderer를 이용하는 방법이 있구요.

두번째로 좀더 유연하게 님이 원하시는 모습을 구현하시려면 javax.swing.table.TableCellRenderer interface를
상속받는 새로운 renderer를 만드시는 겁니다.

첫번째 방법의 개략적인 code는
JTable table = new JTable(......); //님이 생성하신 table
DefaultTableCellRenderer render = (DefaultTableCellRenderer) table.getDefaultRenderer(Class c);
render.setBackground(Color c);
render.setForeground(Color c);
//이렇게 하시면 원하는 데이터 type(정확히는 특정 class type)을 가지고 있는 모든 cell의 색을 바꿀수 있구요.

TableCellRenderer render = table.getDefaultRenderer(int row, int column);
render.setBackground(Color c);
render.setForeground(Color c);
//이렇게 하시면 특정 셀(row, column)에 있는 색을 바꿀수 있습니다.
//이걸 for문등으로 돌리면 한개의 row나 column의 색을 바꿀수 있겠죠?

두번째 방법은
javax.swing.table.TableCellRenderer를 상속받은 새로운 renderer class를 만드시고
이 renderer의 "getTableCellRendererComponent(...) method를 override에서 원하시는
사항을 정의해 주시면 됩니다.

이 renderer를 생성하신 table의
"setDefaultRenderer(Class columnClass, TableCellRenderer renderer)" method를 이용하셔서
등록하시면 됩니다..

ps : 만약 java tutorial을 보신다면 <java tutorial directory>/uiswing/components/table.html을
살펴보세요 달랑 한페이지 이지만 JTable에 관해서 충분히 설명하고 있다고 봅니다.
ps : 오히려 Renderer를 하나 만드시는게 더 속편할때도 있습니다.

부나비

unread,
Jul 2, 2000, 3:00:00 AM7/2/00
to
냠... 틀린부분이 있군요...
=> TableCellRenderer render = table.getDefaultRenderer(int row, int column);
이게 아니구
TableCellRenderer render = table.getCellRenderer(int row, int column);
입니다.

0 new messages