Rafraîchissement événement dans un JFrame
Fermé
lallana2re
Messages postés
18
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 31 août 2018 à 14:41
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 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 Matériel & Système
- Évènement facebook disparu - Forum Facebook
- La description de l’id d’événement 0 dans la source nvlddmkm est introuvable - Windows 11
- Evenement 410 kernel pnp ✓ - Forum Windows 10
- Evenement whatsapp - Guide
1 réponse
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 018
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(); } }