Los componentes translúcidos pueden presentar desafíos de repintado al actualizar su contenido, lo que genera efectos visuales poco atractivos . Este artículo explora una solución que involucra AlphaComposite y proporciona ejemplos de código para implementarla.
AlphaComposite permite manipular cómo se componen los gráficos en el marco. Al establecer la regla adecuada, es posible controlar la transparencia de los elementos renderizados.
Un enfoque es extender JLabel e implementar Icon. Esto permite la creación de un componente translúcido que puede mostrar texto.
Para hacer que todo el marco sea translúcido, ajuste el color de fondo del marco para que tenga un componente de transparencia. Sin embargo, es importante tener en cuenta que esto también afectará la opacidad del contenido.
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JLabel; public class TranslucentJLabel extends JLabel { public TranslucentJLabel() { setOpaque(false); setBackground(new Color(0f, 0f, 0f, 0.5f)); setFont(new Font("Serif", Font.PLAIN, 48)); } @Override protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.SrcOver); super.paintComponent(g2d); } }
import java.awt.AlphaComposite; import java.awt.Color; import javax.swing.JFrame; public class TranslucentFrame extends JFrame { public TranslucentFrame() { setBackground(new Color(0f, 0f, 0f, 0.7f)); setUndecorated(true); setSize(300, 200); setLocationRelativeTo(null); setVisible(true); } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.SrcOver); super.paint(g2d); } }
Al implementar estas técnicas, puedes crear marcos y componentes translúcidos con un comportamiento efectivo de repintado.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3