2016-08-19 5 views
0

こんにちは私はJPanelの上にマウスを置くと白から灰色に変化する空の白いJPanelを示す次のコードを持っています。私は別の色から変更する前に、トランジションを追加is.Can色が変わる間にトランジションを追加するJava

package demos; 

import java.awt.Color; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
public class Panel extends JFrame{ 
    private JPanel panel = new JPanel(); 
    public Panel(){ 
     panel.addMouseListener(new MouseListener(){ 
      @Override 
      public void mouseClicked(MouseEvent e) { 
      } 
      @Override 
      public void mouseEntered(MouseEvent e) { 
       panel.setBackground(Color.GRAY); 
      } 
      @Override 
      public void mouseExited(MouseEvent e) { 
       panel.setBackground(Color.white); 
      } 
      @Override 
      public void mousePressed(MouseEvent e) { 
      } 
      @Override 
      public void mouseReleased(MouseEvent e) { 
      } 
     }); 
     this.setSize(400,400); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setContentPane(panel); 
    } 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run(){ 
       new Panel().show(); 
      } 
     }); 
    } 
} 

今、私の質問:ここ は、コードのですか?

お時間

+1

これは役立つかもしれない:http://stackoverflow.com/questions/17042458/how-to-add-a-time-delay-in-jframe – Gendarme

+1

[ 'javax.swing.Timer']( –

+0

私は同意します。これは重複しているので、私は自分の答えをコミュニティのwikiにしました。 –

答えて

1

のおかげで今の私の質問私は別の色から変更EFORE遅延を追加is.Can?

はい、

  • まず現在の色と所望の色との間のいくつかの色を補間します。単純な線形補間はうまくいくでしょう。
  • ArrayList<Color>を作成し、順番に、あなたの補間色でそれを埋めます。
  • 使用Swing TimerTimerActionListener

    • 変更ArrayListで次の色とJPanelの色。
    • アドバンスint メソッドで使用するインデックス変数ArrayListです。
    • コールJPanelrepaint()
    • パネルが目的の色になるまで、これを続けます。この時点でTimerを停止します。
関連する問題