jtable 열에 텍스트와 아이콘 (mouselistener) 추가
-
19-09-2019 - |
문제
다음 기능을 구현하고 싶지만 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 () 메소드를 사용하여 테이블보기에서 열을 제거 할 수 있습니다.