Bonjour,
Pour pouvoir faire une animation simple d'un dessin 2D dessiner avec la méthode paintComponent(Graphics g), j'ai regarder les tutoriels Java, malheureusement en appliquant son tutoriel, lorsque je lance mon appli, il attend que le thread et fini la boucle avant de m'ouvrir mon appli, hors je voulait voir mon anime.
Voici le code en question:
mon main.java
AnimeThread.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import javax.swing.*; public class Main { private static void creationIG(){ AnimThread frame =new AnimThread("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,400); frame.setVisible(true); } public static void main(String[] args){ javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ creationIG(); } });//optimise et securise la gestion des processus de l'IG } }
et dessin.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AnimThread extends JFrame implements ActionListener{ public Dessin dess; public JPanel p; public JButton b; public AnimThread(String titre){ super(titre); p = new JPanel(new BorderLayout()); dess = new Dessin(); b = new JButton("Go!!!"); p.add(b,BorderLayout.SOUTH); p.add(dess,BorderLayout.CENTER); add(p); b.addActionListener(this); } public void actionPerformed(ActionEvent event){ Object source =event.getSource(); if(source.equals(b)){ for(int i=0;i<10;i++){ int x = dess.PosX,y = dess.PosY; x++; y++; dess.setX(x); dess.setY(y); dess.repaint(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(i); } } } }
autre question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.awt.*; import javax.swing.*; public class Dessin extends JPanel{ public int PosX = 10; public int PosY = 10; public void paintComponent(Graphics g){ super.paintComponent(g); setBackground(Color.black); g.setColor(Color.RED); g.fillRect(PosX, PosY, 20, 20); } public void setX(int x){ PosX = x; } public void setY(int y){ PosY =y; } }
je voudrait créer 2 thread différents, chaque dessine une figure propre a lui même (ex: un cercle), je voudrai savoir comment en faire disparaitre un ( par exemple en appuyant sur un bouton), car tout ce dessine dans la méthode paintComponent.
dernier question:
comment superposer 2 fenêtre et que tout sois visible ? (exemple, on a un rond dans la fenêtre 1 et un rectangle dans la 2, pouvoir voir les deux)
Partager