> Java > java지도 시간 > 본문

이미지를 캡처할 때 JTable 헤더가 사라지는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-06 07:45:02
원래의
970명이 탐색했습니다.

Why Does My JTable Header Disappear When Capturing an Image?

이미지에서 JTable 헤더가 누락되는 이유는 무엇입니까?

Java API를 사용하여 표 형식 데이터의 이미지를 캡처하려고 하면 JTable 헤더가 PNG에서 사라질 수 있습니다. 코드가 작성된다는 것입니다. 이는 패널을 이미지에 페인팅할 때 헤더가 더 이상 계층 구조의 일부가 아니기 때문입니다. 이 문제를 해결하려면 헤더에서 addNotify 메소드를 호출하여 계층 구조에 다시 추가할 수 있습니다.

해결책 1: ScreenImage 클래스 사용(전략 1)

import com.tips4java.screenimage.ScreenImage;

...

// Get the table
JTable table = ti.getTable();

// Create a JScrollPane and add the table to it
JScrollPane scroll = new JScrollPane(table);

// Add the header to the scroll pane
scroll.setColumnHeaderView(table.getTableHeader());

// Set the preferred viewport size so the scroll pane doesn't affect the size
table.setPreferredScrollableViewportSize(table.getPreferredSize());

// Create a panel and add the scroll pane to it
JPanel p = new JPanel(new BorderLayout());
p.add(scroll, BorderLayout.CENTER);

// Create the image from the panel using ScreenImage
BufferedImage bi = ScreenImage.createImage(p);
로그인 후 복사

해결책 2: 수동으로 크기 조정 및 유효성 검사(전략 2)

import javax.swing.*;

...

// Get the table
JTable table = ti.getTable();

// Create a JScrollPane and add the table to it
JScrollPane scroll = new JScrollPane(table);

// Set the preferred viewport size so the scroll pane doesn't affect the size
table.setPreferredScrollableViewportSize(table.getPreferredSize());

// Create a panel and add the scroll pane to it
JPanel p = new JPanel(new BorderLayout());
p.add(scroll, BorderLayout.CENTER);

// Fake having been shown to force layout
p.addNotify();

// Set the panel size to its preferred size
p.setSize(p.getPreferredSize());

// Validate to force recursive layout of children
p.validate();

// Create the image from the panel
BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = bi.createGraphics();
p.paint(g);
로그인 후 복사

두 전략 모두 테이블 크기를 의도한 대로 유지하면서 캡처된 이미지의 테이블 헤더를 효과적으로 렌더링합니다. 두 접근 방식 중 선택은 애플리케이션의 특정 요구 사항에 따라 달라집니다.

위 내용은 이미지를 캡처할 때 JTable 헤더가 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿