문제:
JTable의 이미지를 캡처할 때 테이블 헤더가 결과 이미지에는 나타나지 않습니다.
原因:
JTable 헤더는 패널이 이미지에 그려질 때까지 계층 구조의 일부가 아닙니다. JOptionPane이 닫힐 때 제거되었습니다.
kleopatra의 솔루션:
camickr의 솔루션:
업데이트된 코드:
... // Without having been shown, fake a all-ready p.addNotify(); // Manually size to preferred p.setSize(p.getPreferredSize()); // Validate to force recursive doLayout of children p.validate(); BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics g = bi.createGraphics(); p.paint(g); g.dispose(); ...
결론:
두 솔루션 모두 결과 이미지에 JTable 헤더를 효과적으로 렌더링합니다. kleopatra의 솔루션은 핵심 J2SE를 활용하는 반면, camickr의 솔루션은 추가 기능을 위해 ScreenImage API를 활용합니다. 선택은 애플리케이션의 특정 요구 사항에 따라 달라집니다.
위 내용은 렌더링된 JTable 이미지에서 테이블 헤더를 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!