2014-12-08 2 views
0

나는 방 매니저의 어떤 종류의 프로그램을 만들고있어 대해 다른 렌더러를 생성하지 않고 다른 색으로 각 셀을 페인트 때로는 1 명의 고객이 같은 날에 몇 개의 방을 가질 수 있습니다.자바 JTable는,,, 각 방에 다른 클라이언트가</p> <p>매일, 각 셀

모든 클라이언트를 고유 한 색으로 색칠하고 싶습니다. 각 클라이언트에 대해 고유 한 셀 렌더러를 만들지 않고도이 작업을 수행 할 수 있습니다.

저는 J-Tables를 처음 사용했습니다.이 전체 렌더링 시스템이 나에게 비효율적 인 것처럼 보입니다.

은 평일과 주말의 열 헤더 나는 다른 렌더러를 사용하고 내 응용 프로그램의 스크린 샷,

입니다. 또한 셀은 J-Buttons이며 렌더러는 색상을 지정하지만 같은 색상 만 사용합니다.

회색 세포는 "새로운"이며, 오렌지 사람은, 클라이언트, 다른 클라이언트, 같은 색 :(

the gray cells are "New" and the orange ones are Occupied by clients, different clients, same color :(

어떤 아이디어?

감사에 의해 점유되어

데이브

답변

3

참조 예 # 3 여기 ("적색 또는 녹색 렌더링") : http://www.javapractices.com/topic/TopicAction.do?Id=168

결론은 다른 색이 셀에 따라 그것을 설정, 당신의 렌더러 사용할 수있는 하나의 공유의 JLabel입니다 (위의 예에서는 JLabel을 확장하는 DefaultTableCellRenderer를 확장하므로 모든 셀에 동일한 JLabel이 사용되므로 상속이 마음에 들지 않으면 자체 JLabel을 사용할 수 있습니다. JTable 렌더링 프로세스에서 JLabel을 "재사용 가능한 스탬프"로 사용하므로 셀을 순차적으로 살펴보고 셀의 모양을 기록하고 계속 이동하기 때문에 작동합니다. 당신의 테이블이 5X3이라면 15 개의 이미지, 15 개의 이미지를 가지고 있지 않습니다.

+0

스매싱, 고마워! –

3
  • 하나의 단일 셀 렌더러 클래스 만들기
  • 셀의 상태를 사용하여 색상을 결정합니다.
  • 열이 0이면 연어로 설정하십시오.
  • 그렇지 않으면 열이 0이 아니며 값이 차지하고 있음을 나타내는 경우 노란색으로 설정하십시오.
  • 그렇지 않으면 회색입니다.
  • 키 : 모두는 getTableCellRendererComponent(...) 메서드 내부에있는 논리에 따라 다르며이 메서드에 올바르게 전달 된 매개 변수를 사용한다고 가정합니다.
+0

내가 지금까지 해왔습니다. 그와 같은 것을하고 싶습니다. 열이 0이 아니고 셀이 가득 차 있다면 제안 된 값인 색 코드 값을 확인하고 그에 따라 색을 지정하십시오. 예 : 클라이언트가 클라이언트를 점유하고있는 경우 A - 셀 색 설정 녹색으로, 셀이 클라이언트에 의해 점유 되었다면 B - 셀 색이 청색으로, 셀이 클라이언트에 의해 점유되면 C - 셀 색을 갈색으로 설정 ' –

관련 문제