WindowsBuilder swing java
Résolu
Streamooc
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Streamooc Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Streamooc Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
bonjour je suis nouveau en swing java et je rencontre un problème majeur si quelqu'un pourrait m'aider.Le but de mon programme est de permettre à l'utilsateur une fois en cliquant sur le bouton 'run' de déclencher le défilement d'un fil rouge.Je vous présente les deux classes que j'ai créées.'FilDecrochage' qui permet de dessiner le fil et la classe principale dans laquelle j'ai mis ActionListener sur le bouton run.La méthode 'go' permet de déclencher le fil.
public class FilDecrochage extends JPanel{ public FilDecrochage() { } //Partie 1:fil rouge private int posX = 20; private int posY = -20; @Override public void paintComponent(Graphics g){ g.setColor(Color.red); g.fillRect(posX, posY, 50, 50); } public int getPosX() { return posX; } public void setPosX(int posX) { this.posX = posX; } public int getPosY() { return posY; } public void setPosY(int posY) { this.posY = posY; } }
public class ClassePrincipale extends JFrame { private JPanel contentPane; private FilDecrochage pan=new FilDecrochage(); /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ClassePrincipale frame = new ClassePrincipale(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ClassePrincipale() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JToggleButton toggleButton = new JToggleButton(""); toggleButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { go(); } }); toggleButton.setIcon(new ImageIcon(ClassePrincipale.class.getResource("/tapwindowsbuilder/ressources/run.png.png"))); contentPane.add(toggleButton, BorderLayout.CENTER); } private void go() { // TODO Auto-generated method stub for(int i = -50; i < pan.getWidth(); i++){ int x = pan.getPosX(), y = pan.getPosY(); x++; y++; pan.setPosX(x); pan.setPosY(y); pan.repaint(); //pan.repaint(). Elle demande à votre composant, ici un JPanel, de se redessiner. try { Thread.sleep(10); ///Mise en attente du programme pendant un laps de temps défini dans la méthode sleep() exprimé en millièmes de seconde } catch (InterruptedException e) { e.printStackTrace(); } } } }
A voir également:
- WindowsBuilder swing java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
Bonjour,
Et quel est ton problème ? Ta question ?
Et quel est ton problème ? Ta question ?
KX
Messages postés
16761
Date d'inscription
Statut
Modérateur
Dernière intervention
3 020
Ci-dessous ton code revu et corrigé, avec notamment un SwingWorker dans ta méthode go() pour permettre l'affichage en arrière plan de l'animation, sinon tu ne verrais que l'affichage à la fin de l'ActionListener (pas d'affichage intermédiaire) car le repaint() serait ignoré, l'EDT étant monopolisé par l'ActionListener...
Streamooc
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
Merci pour la correction apportée.Le problème que j'avais est que rien ne s'affichait quand je clique sur le bouton 'run'.Je vais essayer avec ta correction et te rendre compte.Merci beaucoup
Streamooc
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup KX ça marche