Applet file d'attente

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 688 fois - Téléchargée 15 fois

Contenu du snippet

Mon premier applet consiste à ajouter des chaines dans une file d'attente (en queue) et de les retirer en tête. Si vous avez des idées d'optimisation, je suis prenneur!!

Source / Exemple :


package source;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class AppletFileAttente extends Applet implements ActionListener, MouseListener {

	public int q = -1;
	public int t = 0;
	public Button btnVider = new Button("Vider");
	public Button btnRentrer = new Button("Ajouter");
	public Button btnRetirer = new Button("Retirer");
	public TextField TAAjouter = new TextField("Chaine à ajouter");
	public TextArea fldAction = new TextArea("Action perfomée : ",100,50, TextArea.SCROLLBARS_VERTICAL_ONLY);
	public GridLayout GLGestion = new GridLayout(2,1,10,10);
	public GridLayout GLGestion2 = new GridLayout(2,1,10,10);
	public GridLayout GLGestion3 = new GridLayout(1,2,10,10);
	public GridLayout GLGestion4 = new GridLayout(3,3,10,10);
	public GridLayout GLAffichage = new GridLayout(10,1,10,10);
	public GridLayout GLGestion5 = new GridLayout(3,1,10,10);
	public Panel pnlGestion = new Panel(GLGestion);
	public Panel pnlGestion2 = new Panel(GLGestion2);
	public Panel pnlGestion3 = new Panel(GLGestion3);
	public Panel pnlGestion4 = new Panel(GLGestion4);
	public Panel pnlGestion5 = new Panel(GLGestion5);
	public Panel pnlAffichage = new Panel(GLAffichage);
	public TextField fldCase0 = new TextField(null);
	public TextField fldCase1 = new TextField(null);
	public TextField fldCase2 = new TextField(null);
	public TextField fldCase3 = new TextField(null);
	public TextField fldCase4 = new TextField(null);
	public TextField fldCase5 = new TextField(null);
	public TextField fldCase6 = new TextField(null);
	public TextField fldCase7 = new TextField(null);
	public TextField fldCase8 = new TextField(null);
	public TextField fldCase9 = new TextField(null);
	public Label lblvide = new Label(null);
	
	public void init()
	{
		setFont(new Font("Ecrire GRAS", Font.PLAIN, 10));
		setLayout(new GridLayout(1,4,10,10));
		pnlAffichage.add(fldCase0);
		fldCase0.setEditable(false);
		fldCase0.addMouseListener(this);
		pnlAffichage.add(fldCase1);
		fldCase1.setEditable(false);
		pnlAffichage.add(fldCase2);
		fldCase2.setEditable(false);
		pnlAffichage.add(fldCase3);
		fldCase3.setEditable(false);
		pnlAffichage.add(fldCase4);
		fldCase4.setEditable(false);
		pnlAffichage.add(fldCase5);
		fldCase5.setEditable(false);
		pnlAffichage.add(fldCase6);
		fldCase6.setEditable(false);
		pnlAffichage.add(fldCase7);
		fldCase7.setEditable(false);
		pnlAffichage.add(fldCase8);
		fldCase8.setEditable(false);
		pnlAffichage.add(fldCase9);
		fldCase9.setEditable(false);
			
		add(pnlGestion);
		pnlGestion2.setLayout(GLGestion2);
		pnlGestion.add(pnlGestion2);
		pnlGestion3.setLayout(GLGestion3);
		pnlGestion2.add(pnlGestion3);
		pnlGestion2.add(fldAction);
		fldAction.setEditable(false);
		fldAction.setBackground(Color.white);
		pnlGestion3.add(pnlGestion5);
		pnlGestion5.add(lblvide);
		pnlGestion5.add(TAAjouter);
		TAAjouter.setEditable(true);
		TAAjouter.addMouseListener(this);
		pnlGestion4.setLayout(GLGestion4);
		pnlGestion3.add(pnlGestion4);
		pnlGestion4.add(btnRentrer);
		btnRentrer.addActionListener(this);
		pnlGestion4.add(btnVider);
		btnVider.addActionListener(this);
		pnlGestion4.add(btnRetirer);
		btnRetirer.addActionListener(this);
		
		add(pnlAffichage);
	}
	
	public void actionPerformed(ActionEvent action) 
	{
		if(action.getSource()==btnRentrer)
		{
			if(q==-1) {
				fldCase0.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à  la case "+q+" car la file était vide");
			}
			else if(q==0) {
				fldCase1.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==1) {
				fldCase2.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==2) {
				fldCase3.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==3) {
				fldCase4.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==4) {
				fldCase5.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==5) {
				fldCase6.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==6) {
				fldCase7.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==7) {
				fldCase8.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q==8) {
				fldCase9.setText(TAAjouter.getText());
				q++;
				fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été  ajoutée à  la case "+q+" car la vide contenait déjà "+q+" élèments");
			}
			else if(q>8)
			{
				fldAction.setText(fldAction.getText()+"\n\n Plus de place");
			}	
		}
		
		if(action.getSource()==btnRetirer)
		{
			retirer();
		}
		
		if(action.getSource()==btnVider)
		{
			vider();			
		}
	}
	
	public void mouseClicked(MouseEvent mouse) 
	{
		if(mouse.getSource()==TAAjouter)
			TAAjouter.setText(null);
		if(mouse.getSource()==fldCase0)
			retirer();
	}

	public void mouseEntered(MouseEvent mouse) {	}
	public void mouseExited(MouseEvent mouse) {}
	public void mousePressed(MouseEvent mouse) {	}
	public void mouseReleased(MouseEvent mouse) {}
	
	public void retirer()
	{	
		if(q!=-1)
		{
			fldAction.setText(fldAction.getText()+"\n\n Chaine retirée : "+fldCase0.getText());
			fldCase0.setText(fldCase1.getText());
			fldCase1.setText(fldCase2.getText());
			fldCase2.setText(fldCase3.getText());
			fldCase3.setText(fldCase4.getText());
			fldCase4.setText(fldCase5.getText());
			fldCase5.setText(fldCase6.getText());
			fldCase6.setText(fldCase7.getText());
			fldCase7.setText(fldCase8.getText());
			fldCase8.setText(fldCase9.getText());
			fldCase9.setText(null);
			q--;
		}
		else if(q==-1)
		{
			fldAction.setText(fldAction.getText()+"\n\n File vide");
		}
	}
	
	public void vider()
	{
		if(q!=-1)
		{
			fldCase0.setText(null);
			fldCase1.setText(null);
			fldCase2.setText(null);
			fldCase3.setText(null);
			fldCase4.setText(null);
			fldCase5.setText(null);
			fldCase6.setText(null);
			fldCase7.setText(null);
			fldCase8.setText(null);
			fldCase9.setText(null);
			fldAction.setText(fldAction.getText()+"\n\n File vide");
			q=-1;
		}
		else if(q==-1)
		{
			fldAction.setText(fldAction.getText()+"\n\n File déjà vide");
		}
	}
}

A voir également

Ajouter un commentaire

Commentaires

coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29 -
salut

# if(q==-1) {
# fldCase0.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la file était vide");
# }
# else if(q==0) {
# fldCase1.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==1) {
# fldCase2.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==2) {
# fldCase3.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==3) {
# fldCase4.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==4) {
# fldCase5.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==5) {
# fldCase6.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==6) {
# fldCase7.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==7) {
# fldCase8.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q==8) {
# fldCase9.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La chaine : "+TAAjouter.getText()+" a été ajoutée à la case "+q+" car la vide contenait déjà "+q+" élèments");
# }
# else if(q>8)
# {
# fldAction.setText(fldAction.getText()+"\n\n Plus de place");
# }

tu peux le factoriser ce code....

dans java.util.* t'as une classe queue, t'avais plus qu'a mettre une interface graphique dessus, sans t'occuper de l'implementation de la queue...

une stack, c'est une liste chainee, une queue, c'est une liste chainee, sauf qu'on "stoque plus haut" un couple vers le debut et vers la fin (pour pouvoir ajouter au debut, et retirer a la fin.) et les "fleches" (pointeurs) vont dans le sens inverse de la queue.
cs_petifa
Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014
-
slt,
coucou747 a raison ton code peut être simplifié, meme si le "copier/coller" marche super bien dans ce cas
cs_rezmim
Messages postés
1
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
27 octobre 2008
-
tre bon travail . merci
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Un switch(q) serait un peu moins brouillon que les 10 else if.

Tu pourrais utiliser des ArrayList pour stocker tes fldCase0, fldCase1 ... et ensuite, utiliser des for ( obect c : ArrayList){} en particulier pour vider

Au lieu de faire toujours la meme chose :
# fldCase7.setText(TAAjouter.getText());
# q++;
# fldAction.setText(fldAction.getText()+"\n\n La c

Tu pourrais créer une méthode methode(fldCasei) qui le fait et ce serait plus simple

Je ne sais pas si j'ai été bien clair, demande moi si ce n'est pas le cas
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Mais, il me semble que tu réécris des méthodes qui existent déjà, ce n'est pas le principe de la liste chainee que tu as réimplémenté en ajoutant une interface ?? Peut etre que je me trompe...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.