문제

다음 기능을 구현하고 싶지만 Java에서 가능하다면 혼란스러워합니다. 그렇다면 어떻게? 도와주세요:

나는 jtable 종류의 테이블을 만들고 싶다. 첫 번째 줄 테이블의 열 이름과 각 열에 1 행의 각 셀에있는 각 열에 아이콘이 포함되어 있습니다. 해당 아이콘을 클릭하면 테이블에서 해당 열을 제거해야합니다 (Mouselistener를 사용하여 가능).

jtable의 셀에 버튼을 추가 할 수있는 많은 솔루션을 찾았지만 텍스트와 아이콘 (Mouselistener)을 모두 셀에 추가하는 것을 설명하는 것은 없습니다. 도와 드릴 수 있는지 확인하고 읽어 주셔서 감사합니다.

도움이 되었습니까?

해결책

사용자 정의를 만들 수 있습니다 TableCellRenderer 그것은 확장됩니다 JLabel. 이것 JLabel 아이콘으로 만들 수 있습니다 (JLabel 텍스트의 오른쪽 또는 왼쪽에 아이콘을 표시 할 수 있습니다). 당신은 원할 것입니다 getTableCellRendererComponent 렌더링 된 행을 테스트하는 것은 첫 번째 여부이거나 그렇지 않으면 아이콘을 설정하십시오. 그렇지 않으면 그렇지 않습니다.

제거 조치의 경우 a를 추가 할 수 있습니다 MouseListener 테이블에서 그리고 처리 할 때 mouseClicked 방법, 테스트를 통해 클릭 한 셀을 찾을 수 있습니다. rowAtPoint 그리고 columnAtPoint a Point ~로부터 mouseEvent.getX() 그리고 mouseEvent.getY(). 아이콘이 클릭 한 상태에서 첫 번째 행을 결정하면 열 모델에서 열을 제거 할 수 있습니다.

만약 첫 번째 줄, 당신은 실제로 테이블 헤더를 의미하고, 동일한 렌더러를 JTableHeader, MouseListener 그 구성 요소에서.

다른 팁

글쎄, 나는 당신의 질문을 이해하지 못합니다.

1st 줄의 테이블이 열 이름과 아이콘이 포함 된 jtable 종류의 테이블을 만들고 싶습니다.

열 이름과 정렬 방향을 표시하여 정렬이 작동하는 방식과 같은 테이블 헤더를 의미합니까?

그렇다면 테이블 헤더에 사용자 정의 렌더러를 사용하고 헤더에 Mouselistener를 추가하여 클릭 한 열을 결정합니다. 사용자 정의 할 수 있어야합니다 기본 테이블 헤더 렌더러 당신이 원하는 것을 할 수 있습니다.

아니면 테이블의 첫 번째 데이터 행을 의미합니까? 그렇다면 여전히 사용자 정의 렌더러를 사용해야하지만 이번에는 테이블 헤더가 아닌 테이블에 mouselistener를 추가합니다.

두 경우 모두 TablecolumnModel.removeColumn () 메소드를 사용하여 테이블보기에서 열을 제거 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top