반투명 구성 요소에서 다시 그리기
질문: macOS에서 Java로 반투명 창을 생성하려고 시도하고 동적 텍스트가 포함된 JLabel은 구성 요소가 올바르게 다시 그려지지 않습니다.
해결 방법: 문제를 해결하려면 사용자 정의 JLabel을 확장하고 아이콘 인터페이스를 구현하여 원하는 반투명 효과를 얻을 수 있습니다. 다음은 AlphaComposite를 사용하는 예입니다.
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import javax.swing.JLabel; public class TranslucentLabel extends JLabel { private Image image; private AlphaComposite alphaComposite; public TranslucentLabel() { super(); setBackground(new Color(0f,0f,0f,0.3f)); alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); } @Override public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); image = createImage(getWidth(), getHeight()); Graphics2D imageGraphics = (Graphics2D) image.getGraphics(); imageGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); super.paintComponent(imageGraphics); g2d.setComposite(alphaComposite); g2d.drawImage(image, 0, 0, null); g2d.dispose(); } }
이 접근 방식에서는 사용자 정의 JLabel(TranslucentLabel)이 생성되고 AlphaComposite 기술이 적용되어 반투명 프레임 배경 위에 반투명 배경을 구성하여 구성 요소가 올바르게 다시 칠해집니다.
위 내용은 macOS의 Java 반투명 창에서 JLabel을 올바르게 다시 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!