Rafraîchissement événement dans un JFrame
Fermé
lallana2re
Messages postés
19
Date d'inscription
lundi 2 avril 2018
Statut
Membre
Dernière intervention
6 novembre 2020
-
Modifié le 30 août 2018 à 22:47
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 août 2018 à 14:41
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 août 2018 à 14:41
A voir également:
- Rafraîchissement événement dans un JFrame
- Impossible de changer la fréquence de rafraîchissement ✓ - Forum Windows 10
- Evenement javascript - Astuces et Solutions
- Brouillon événement facebook - Forum Facebook
- Rafraichissement écran "bloqué" a 60hz - Forum Matériel informatique
- Sondage evenement facebook - Guide
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
31 août 2018 à 14:41
31 août 2018 à 14:41
Bonjour,
Ton code me paraissait trop compliqué pour le corriger, je préfère repartir de zéro pour te proposer quelque chose qui fonctionne plus ou moins comme tu t'y attendais.
Ton code me paraissait trop compliqué pour le corriger, je préfère repartir de zéro pour te proposer quelque chose qui fonctionne plus ou moins comme tu t'y attendais.
package AssaneCauchemar;
import java.awt.*;
import javax.swing.*;
public class Demarrage {
public static void main(String[] args) {
TestLevel dessin = new TestLevel((g, t) -> {
g.setColor(Color.RED);
g.drawLine(0, 0, (int) (t / 100_000_000), 0);
});
JButton bouton = new JButton("start");
bouton.addActionListener(e -> dessin.start());
JFrame fenetre = new JFrame();
fenetre.add(bouton, BorderLayout.NORTH);
fenetre.add(dessin, BorderLayout.CENTER);
fenetre.pack();
fenetre.setLocationRelativeTo(null);
fenetre.setVisible(true);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package AssaneCauchemar;
import java.awt.*;
import java.util.concurrent.*;
import java.util.function.BiConsumer;
public class TestLevel extends Component {
private final BiConsumer<Graphics2D, Long> instructions;
private long zeroNanoTime;
private ScheduledFuture<?> task;
public TestLevel(BiConsumer<Graphics2D, Long> instructions) {
this.instructions = instructions;
}
@Override
public void paint(Graphics g) {
if (task != null) {
instructions.accept((Graphics2D) g, System.nanoTime() - zeroNanoTime);
}
}
public void start() {
task = Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(this::repaint, 0, 100, TimeUnit.MILLISECONDS);
zeroNanoTime = System.nanoTime();
}
}