KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 15:01:05

[java][applet][débutant]Affichage

Rechercher : dans
[java][applet][débutant]Affichage
par TexTwil
 Fil de Discussions
Statut : Non résolu
mardi 26 octobre 2004 à 14:59:31
Bonjour,
j'ai fait l'applet suivant (code ci dessous) qui est censé immiter une commande "ping". En gros, il ouvre un socket puis le referme vers un site 10x à la suite (boucle for).

La méthode pingIt se lance quand on appuye sur le bouton "PingIt". Le TextArea situé sous le bouton affiche les résulatats (provenant de la méthode Debug).

Ma question est la suivante : La classe telle qu'elle est ci dessous affiche les résultats une fois que la boucle for est terminée et j'aimerais savoir comment faire pour afficher chaque ligne en temps réel dans le TextArea.

Merci pour votre aide.


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.io.IOException;
import java.net.Socket;



public class MainPing extends JPanel implements ActionListener
{
	
	private JTextArea affichage;
	private JButton bouton;
	private JPanel pannel;
	private JFrame fenetre;


	MainPing()
	{
		//super.setLayout(new GridLayout(3,1));
		bouton = new JButton("Ping It");
		affichage = new JTextArea("",10,30);
		
		
		bouton.addActionListener(this);
		
		add(bouton);
		add(affichage);


	}
	
    public void actionPerformed(ActionEvent e) 
    {
    	pingIt();
    }
    

	public void pingIt()
	{
		long start =0, stop = 0;		
		Socket socket = null;
		
		for(int i=0; i<10; i++)
		{
			try 
			{
				start = System.currentTimeMillis();
				socket = new Socket("www.free.fr", 80);
				stop = System.currentTimeMillis();
												
				Debug("Socket opened in "+(stop-start)+" ms.    ");
			}
			catch (Exception e)
			{
				Debug("Site is not there.\n");
			}
			finally 
			{
				try
				{
					if (socket != null)
					socket.close();
					Debug(" Closing socket ...\n");
					Thread.sleep(2000);
				} 
				catch (IOException e) {	}
				catch (InterruptedException e) { }
				
			}
			
		}
	}
	
	public void Debug(String message)
	{
		affichage.append(message);
	}
    
    private static void createAndShowGUI() 
    {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);
        

        //Create and set up the window.
        JFrame fenetre = new JFrame("JPing");
        fenetre.setSize(400,500);
        //fenetre.pack();
        fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        MainPing newContentPane = new MainPing();

        newContentPane.setOpaque(true); //content panes must be opaque
        fenetre.setContentPane(newContentPane);

        //Display the window.
        
        fenetre.show();
        fenetre.setVisible(true);
    }    
    
    
    
    public static void main(String[] args) 
    {
		createAndShowGUI(); 
    }	
	
}    



Tex
Répondre à TexTwil  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par choubaka, le mardi 26 octobre 2004 à 17:56:41 Fil de Discussions
Salut

le problème n'est pas si complexe, mis à part de grossières erreurs au niveau de la structure de ton programme...

Tu dois dissocier la vue du moteur de ton application et éviter de créer la vue dans la méthode Main...

en gros ...

Créer une classe ("Pinger") possédant une méthode statique (pingIt) prenant en argument l'adresse URL à pinger et renvoyant un String renvoyant le résultat du ping, qu'il soit correct ou pas, à toi de renvoyer un "code d'erreur" en String pour analyser.

Créer ton JFrame avec ton bouton et ton textArea, tout ce qui est relatif à la vue... (exemple MaJFramePourPinguer)

Dans ton code gérant l'event du bouton, tu fais appel à la méthode statique de la classe pinger (qui ne doit pas forcément être instanciée) dans une boucle. Du fait que cette méthode renvoie un String (qu'il soit le résultat du ping ou un de tes codes d'erreur, tu peux à ce moment là effectuer l'affichage de tes lignes de résultats une par une.

Ce qui peut donner dans la gestion de l'event..


for(int i=0; i<10; i++){

   String s = Pinger.pingIt()

            if ( s = "erreur'){   // ton code erreur ou tes codes selon le cas, tu affiches et gères ton erreur

             monTextArea.setText("s");

              }

           else  monTextArea.setText(s);


                 


           


voilà




Chouba,
Pochard d'assaut .. 
Répondre à choubaka

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Patouch, le lundi 13 décembre 2004 à 10:53:36 Fil de Discussions
je penses qu'ecrit comme ça, chaque ligne s'ecrit au-dessu de la précendente, comment fair pour qu'elle s'affiche a la ligne!?

merci d avance
Répondre à Patouch

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par dalby, le jeudi 16 décembre 2004 à 08:13:46 Fil de Discussions 
bonjour,
je n'ai pas le meme prog que toi, mais le meme problème d'affichage : chaque donnee s'inscrit à la place de la précédente
j'ai beau chercher partout, je n'arrive pas à faire en sorte qu'elles s'inscrivent l'une en dessous de l'autre
si jamais tu finis par trouver la solution, n'oublies pas de la poster!!
bonne journée
Répondre à dalby
Discussions pertinentes trouvées dans le forum
05/01 15h37java applet afficher imageProgrammation05/01 15h370
17/11 11h31[JAVA] Applet signée, confirm accept certif.Programmation17/11 15h205
27/03 13h04JAVA APPLETProgrammation27/03 14h071
25/03 14h44JAVA APPLETProgrammation25/03 14h440
Plus de discussions sur « [java][applet][débutant]Affichage » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide