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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 31 août 2018 à 14:41
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 31 août 2018 à 14:41
A voir également:
- Rafraîchissement événement dans un JFrame
- Evenement 410 kernel pnp ✓ - Forum Windows 10
- Onglet évènement facebook disparu - Forum Facebook
- Un evenement inattendu s'est produit league of legends - Forum Jeux PC
- Impossible de changer la fréquence de rafraîchissement - Forum Ecran
- Musique d'ambiance evenement sportif - Forum Musique / Radio / Clip
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
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(); } }