accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Bloquer les éléments d'une liste pendant un laps d e temps...

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.java ] 

Retour : Accueil du site fr comp lang java   charte stats de ce groupe


  Sujet:   Bloquer les éléments d'une liste pendant un laps d e temps...  
 De: fabien.pe...@gmail.com (Foub31400)
 Groupes: fr.comp.lang.java
 Organisation: http://groups.google.com
 Date: 15. Mar 2008, 18:02:47
Bonjour,

je souhaite pouvoir bloquer les éléments présents dans une
java.util.List jusqu'à que l'utilisateur clique sur un bouton par
exemple.

Par exemple, j'aimerais pouvoir écrire l'action suivante pour mon
bouton : «

JButton btnDebloquer = new JButton("Débloquer situation !");
btnDebloquer.addActionListener(new ActionListener(){@Override
	public void actionPerformed(ActionEvent arg0) {
		maListe.setBloquer(false);
	}
}); ».

Si avant que je clique sur le bouton, on essaye d'ajouter des éléments
à ma liste, il faudrait que ces actions soient mis dans une file
d'attente jusqu'à que mon clique autorise l'accès à ma liste.

Savez-vous comment pourrais-je faire cela en java ?

J'ai essayé de me créer la classe "ArrayListPerso" : «

package listPerso;

import java.util.ArrayList;

public class ArrayListPerso<T> extends ArrayList<T> {
	/** Version de sérialisation */
	private static final long serialVersionUID = 1L;

	/** Bloquer l'ajout d'élement ? */
	private boolean bloquer = false;

	/**
	 * Constructeur par défaut.
	 */
	public ArrayListPerso() {
		super();
	}


	/**
	 * Retourne un boolean pour indiquer si on bloque l'ajout d'élément
	 * dans la liste.
	 *
	 * @return true la liste des éléments est bloqué, false on peut
modifier la liste.
	 */
	public boolean isBloquer() {
		return bloquer;
	}

	/**
	 * Définit l'état de la liste : bloque-t-on tout ajout d'élément ou
pas ?
	 * @param bloquer true on bloque tout ajout d'élément, false on
autorise tout modification.
	 */
	public void setBloquer(boolean bloquer) {
		if ((bloquer == false) && (this.bloquer == true)) {
			this.bloquer = bloquer;
			this.notifyAll();
		} else {
			this.bloquer = bloquer;
		}
	}


	@Override
	public boolean add(T arg0) {

		if (bloquer) {
			System.out.println("L'ajout de l'élément " + arg0 + " est
suspendu !");
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		System.out.println("Ajout de l'élément " + arg0 + " effectué !");
		return super.add(arg0);
	}
} »

et la classe de test : «
	public static void main(String[] args) {
		try {
	
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}

		final ArrayListPerso<String> maListe = new ArrayListPerso<String>();

		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JButton btnDebloquer = new JButton("Débloquer situation !");
		btnDebloquer.addActionListener(new ActionListener(){@Override
			public void actionPerformed(ActionEvent arg0) {
				maListe.setBloquer(false);
			}
		});

		frame.getContentPane().add(btnDebloquer, BorderLayout.CENTER);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);


		maListe.add("allo");
		maListe.setBloquer(true);
		maListe.add("coucou");
	}
».

Voici les informations affichées dans la console : «

Exception in thread "main" java.lang.IllegalMonitorStateException
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:485)
	at listPerso.ArrayListPerso.add(ArrayListPerso.java:50)
	at TestFabienListePerso.main(TestFabienListePerso.java:45)
Ajout de l'élément allo effectué !
L'ajout de l'élément coucou est suspendu !

» alors que je souhaiterais avoir : «
Ajout de l'élément allo effectué !
L'ajout de l'élément coucou est suspendu !
» puis, quand je clique sur le bouton : « Ajout de l'élément coucou
effectué ! ».

Merci d'avance pour votre aide.
F.


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)