JPanelのアニメーショングラデーションの背景を設定しようとしています。エフェクトは機能しますが、もう一度やり直すとスムーズに移行したいと思います。私の現在の実装は以下の通りです。 xvalue2が制限値に達すると、色が入れ替えられ、再び開始されます。スムーズグラデーションの背景のアニメーションJava
public class GradientAnimation {
static class GradientPanel extends JPanel {
private static final long serialVersionUID = -4185583782901846967L;
private Timer timer;
private float Xend;
private final float MAXVALUE = 800f;
private Color color1 = new Color(128,62,153,255);
private Color color2 = new Color(192,201,200,255);
GradientPanel() {
Xend = 0f;
setOpaque(true);
ActionListener action = new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
if (Xend < MAXVALUE) Xend+=2f;
else{
Color aux = color1;
color1 = color2;
color2 = aux;
Xend = 0f;
}
revalidate();
repaint();
}
};
timer = new Timer(5, action);
timer.start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
final BufferedImage image = new BufferedImage(
getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
g2d = image.createGraphics();
GradientPaint prim = new GradientPaint(0f, 0f, color1,
Xend, 0f, color2);
g2d.setPaint(prim);
g2d.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, 0, 0, null);
}
}
private static void createAndShowUI() {
try {
JFrame frame = new JFrame("Gradient Animation");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
GradientPanel imagePanel = new GradientPanel();
frame.add(imagePanel);
frame.setSize(400, 400);
frame.setVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
また、グラデーションアニメーションの完璧なループを持つように色を入れ替える瞬間を隠したいと思います。コードが正しいかどうか、どうすれば品質が向上するか教えてください。以下の変形例では
ことは、制限の目的に反しと、あなたを助けるボランティアを私達との公正再生されていないとして、フィラーのためのナンセンスを投稿しないでください。代わりに、問題の詳細、コードが何をしているのか、それが何をすべきかを教えてください。 –
はい、わかりました。しかし、私の説明はコードに比べて短すぎるので、スニペットの代わりに作業コードを掲示してテストしてみたかったのです。ごめんなさい。 –
ナンセンスではなく、説明を追加してください。あなたが書いたコードを理解し、記述してください。繰り返しますが、私たちを助けるだけであなたを助けます。 –