Souci actionperformed

jeremieT Messages postés 14 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 10 juin 2009 - 9 mai 2009 à 15:28
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 9 mai 2009 à 17:42
Bonjour, j'ai un soucis dans mon projet java: je voudrais mettre le programme en "pause " jusqu'a ce que je clique sur un bouton.(je ne peux pas mettre le code qui doit se lire dés que  le bouton ait été cliqué directement dans celui -ci)
existe il une classe qui me permette de faire quelque chose du type  waitfor(Button0.cliqué){Action2}   ?
cela doit donner un truc comme cela:
Merci d'avance.

Classe MiseAJour{
Action 1;
Attendre que le bouton 1 ou le bouton 2 aient été cliqués puis faire l'action 2
Action2;

}

private JButton getJButton0() {
      
            jButton0.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(java.awt.event.ActionEvent e)
                {
                    numfilm = 0;
                     miseAJour();
                     compteur++;
                 }
                }
            };
  

2 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
9 mai 2009 à 17:21
Nous pouvons par exemple utiliser une ArrayBlockingQueue et faire un take() qui attend qu'un élément devienne disponible.
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
9 mai 2009 à 17:42
Voici un exemple complet:

/*
 * ActionTest.java
 *
 */

import java.awt.*;
import java.awt.event.*;
import java.util.concurrent.ArrayBlockingQueue;
import javax.swing.*;

public class ActionTest extends JFrame {

    private JToolBar toolbar;
    protected JButton btStart;
    protected JButton btA;
    protected JButton btB;
    protected JLabel label;
    protected ArrayBlockingQueue queue;

    public ActionTest() {
        super("ActionTest");
        initComponents();
        queue = new ArrayBlockingQueue(1);
    }

    private void initComponents() {

        toolbar = new JToolBar();
        btStart = new JButton();
        btA = new JButton();
        btB = new JButton();
        label = new JLabel();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        toolbar.setRollover(true);

        btStart.setText("Start");
        btStart.setFocusable(false);
        btStart.setHorizontalTextPosition(SwingConstants.CENTER);
        btStart.setVerticalTextPosition(SwingConstants.BOTTOM);
        btStart.addActionListener(new ActionListener() {

            public void actionPerformed(final ActionEvent evt) {
                btStartActionPerformed(evt);
            }
        });
        toolbar.add(btStart);

        btA.setText("A");
        btA.setEnabled(false);
        btA.setFocusable(false);
        btA.setHorizontalTextPosition(SwingConstants.CENTER);
        btA.setVerticalTextPosition(SwingConstants.BOTTOM);
        btA.addActionListener(new ActionListener() {

            public void actionPerformed(final ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        toolbar.add(btA);

        btB.setText("B");
        btB.setEnabled(false);
        btB.setFocusable(false);
        btB.setHorizontalTextPosition(SwingConstants.CENTER);
        btB.setVerticalTextPosition(SwingConstants.BOTTOM);
        btB.addActionListener(new ActionListener() {

            public void actionPerformed(final ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        toolbar.add(btB);

        label.setFont(label.getFont().deriveFont(12f));
        add(label);

        getContentPane().add(toolbar, BorderLayout.PAGE_START);

        setSize(300, 200);
        setLocationRelativeTo(null);
    }

    private void btStartActionPerformed(final ActionEvent evt) {
        new Update(this).start();
        btA.setEnabled(true);
        btB.setEnabled(true);
        btStart.setEnabled(false);
    }

    private void jButton2ActionPerformed(final ActionEvent evt) {
        queue.offer("");
        btA.setEnabled(false);
        btB.setEnabled(false);
    }

    private void jButton3ActionPerformed(final ActionEvent evt) {
        queue.offer("");
        btA.setEnabled(false);
        btB.setEnabled(false);
    }

    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            public void run() {
                new ActionTest().setVisible(true);
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}

/*
 * Update.java
 *
 */

public class Update extends Thread {

    ActionTest actionTest;

    public Update(final ActionTest actionTest) {
        super();
        this.actionTest = actionTest;
    }

    @Override
    public void run() {
        actionTest.label.setText("Update Thread is waiting for a button click...");
        try {
            actionTest.queue.take();
            actionTest.label.setText("Done.");
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        actionTest.btA.setEnabled(false);
        actionTest.btB.setEnabled(false);
        actionTest.btStart.setEnabled(true);
    }
}
0
Rejoignez-nous