Les composants translucides peuvent présenter des défis de repeinture lors de la mise à jour de leur contenu, conduisant à des effets visuels peu attrayants . Cet article explore une solution impliquant AlphaComposite et fournit des exemples de code pour la mettre en œuvre.
AlphaComposite permet de manipuler la façon dont les graphiques sont composés sur le cadre. En définissant la règle appropriée, il devient possible de contrôler la transparence des éléments rendus.
Une approche consiste à étendre JLabel et à implémenter Icon. Cela permet la création d'un composant translucide pouvant afficher du texte.
Pour rendre l'ensemble du cadre translucide, ajustez la couleur d'arrière-plan du cadre pour avoir un composant de transparence. Cependant, il est important de noter que cela affectera également l'opacité du contenu.
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); } }
En mettant en œuvre ces techniques, vous pouvez créer des cadres et des composants translucides avec un comportement de repeinture efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!