Hi, Patrick. Can you please run the code using these options: -Dsun.java2d.xrender=true -Dsun.java2d.xrender=false -Dsun.java2d.opengl=true -Dsun.java2d.opengl=false
> > After tests it seems that the problem doesn't come from Timer , but > the repaint() method , > > > even with this code the bug is here. > the bug is on Linux. > > 2017-04-11 11:07 GMT+02:00 Walter Laan <wl...@costengineering.eu > <mailto:wl...@costengineering.eu>>: > Note that the example code in JDK-8178091 sleeps on the EDT, so you’re lucky > it paints at all instead of hanging the UI. > > > > It looks like you adapted the code from > http://codereview.stackexchange.com/questions/29630/simple-java-animation-with-swing > > <http://codereview.stackexchange.com/questions/29630/simple-java-animation-with-swing> > where no-one experienced with Swing pointed out this error L. > > > > Using a javax.swing.Timer (not the java.util.Timer!) and it runs okay (using > Win10, Java 8u101): > > > > private void go() { > > > > new Timer(10, new ActionListener() { > > // Les coordonnées de départ de notre rond > > private int x = pan.getPosX(), y = pan.getPosY(); > > // Le booléen pour savoir si l'on recule ou non sur l'axe x > > private boolean backX = false; > > // Le booléen pour savoir si l'on recule ou non sur l'axe y > > private boolean backY = false; > > > > @Override > > public void actionPerformed(ActionEvent e) { > > // Si la coordonnée x est inférieure à 1, on avance > > if(x < 1) { > > backX = false; > > } > > // Si la coordonnée x est supérieure à la taille du Panneau > moins la taille du rond, on recule > > if(x > pan.getWidth() - 50) { > > backX = true; > > } > > // Idem pour l'axe y > > if(y < 1) { > > backY = false; > > } > > if(y > pan.getHeight() - 50) { > > backY = true; > > } > > > > // Si on avance, on incrémente la coordonnée > > // backX est un booléen, donc !backX revient à écrire > > // if (backX == false) > > if(!backX) { > > pan.setPosX(++x); > > // Sinon, on décrémente > > } > > else { > > pan.setPosX(--x); > > } > > // Idem pour l'axe Y > > if(!backY) { > > pan.setPosY(++y); > > } > > else { > > pan.setPosY(--y); > > } > > > > // On redessine notre Panneau > > pan.repaint(); > > } > > }).start(); > > } > > > > Hope that helps, > > Walter. > > > > From: swing-dev [mailto:swing-dev-boun...@openjdk.java.net > <mailto:swing-dev-boun...@openjdk.java.net>] On Behalf Of Patrick Chen > Sent: maandag 10 april 2017 12:23 > To: swing-dev@openjdk.java.net <mailto:swing-dev@openjdk.java.net> > Subject: Re: <Swing Dev> JDK-8178091 : Bug I will workin on > > > > (edit : for example this game coded in java : > https://github.com/cloudStrif/GoldenSunD > <https://github.com/cloudStrif/GoldenSunD> will work with java 7 > > but clearly not with java8 (linux 64 bits) because of lags) > > > > 2017-04-10 12:19 GMT+02:00 Patrick Chen <chen.j.patr...@gmail.com > <mailto:chen.j.patr...@gmail.com>>: > > Hi every one , > > just wanted to inform that I am working to fix this bug. > > > > it is when we devellop animations thanks to repaint() method , > > for java 7 it works well > > but with java8 not , > > (linux 64 bits it doesn't really work ) > > > > so after watching the source code it seem that it is not a swing problem > > but AWT : Component.java . > > > > thank you > > > > > > > >