在网上看到一个很好玩的类AlphaComposite,做出来的效果挺不错的。试了下,编写了一个文字淡入淡出的效果。原理如下:在JFrame上放一个JComponent,重写JComponent的paintComponent方法,用另外一个线程控制alpha的值,实现文字淡入淡出效果。
然后就发现一个问题,如果把JComponent改成JPanel的话,淡入淡出就只一次,也就是说文字从没有到逐渐显示,然后就不变了,而alpha的值却还在不断的循环改变。用JComponent的话,就一直循环淡入淡出显示。不知道为什么。
JComponent里的方法:
- public void paintComponent(Graphics g) {
- Graphics2D g2d = (Graphics2D)g;
- AlphaComposite comp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
- g2d.setComposite(comp);
- g2d.setColor(Color.red);
- g2d.drawString("淡入淡出", 40, 40);
- }