在網上看到一個很好玩的類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);
- }