IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Swing] Boite de dialogue


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut [Swing] Boite de dialogue
    Bonjour tout le forum.
    J'ai un souci d'affichage et de rafraichissement de ma boite dialogue.
    Lors de la récupération d'un fichier en http, j'affiche une boite de dialogue afin de visualiser la progression du téléchargement.
    Mais la boite apparait mais la barre de progrssion( mise à jour par la commande dlg.setProgressBar( 50 ); ) ne s'affiche pas

    Merci de votre aide.

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public static class RecuperartionFile
    {
    	File file = null;
    	/** 
             * Creates a new instance of RecuperartionFile
             */
    	public RecuperartionFile( URL url )
    	{
    		DownloadDlg dlg = new DownloadDlg( null, false );
    		dlg.setVisible( true );
     
    		try
    		{
    			URLConnection urlCon = url.openConnection();
     
    			dlg.setProgressBar( 50 );
    			InputStream is = urlCon.getInputStream();
    			if( is != null )
    			{
    				byte[] data = new byte[ 0 ];
    				byte[] buffer = new byte[ 1024 * 2 ];
    				int taille;
    				while( ( taille = is.read( buffer ) ) > 0 )
    				{ 
    					byte[] data2 = new byte[ data.length + taille ];
    					System.arraycopy( data, 0, data2, 0, ata.length );						
    					System.arraycopy( buffer, 0, data2, data.length, taille );
    					data = data2;
    				}
    				File fichier = new File( System.getProperty( "user.home" ), "img" );
    				FileOutputStream fos = new FileOutputStream( fichier );
    				fos.write( data );
    				fos.flush();
    				fos.close();
    				this.file = fichier;
    			}
    		} catch( java.io.IOException ex )
    		{
    			ex.printStackTrace();
    		}
    		dlg.setVisible( false );
    	}
    }

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Montre plutôt ta classe DownloadDlg...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut
    voici ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    package T2Viewer;
     
    import java.awt.BorderLayout;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
     
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
     
    public class DownloadDlg extends JDialog
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	/** width of dialog */
    	int width = 0;
     
    	/** main application object */
    	static Viewer parent;
     
    	/**             */
    	JProgressBar progress = null;
     
     
    	public DownloadDlg( DicomDirDialog dialog, boolean bModal )
    	{
    		super( dialog, bModal );
     
    		parent = Viewer.getViewer();
    		this.setLayout( new BorderLayout());
    		this.setDefaultCloseOperation( HIDE_ON_CLOSE );
    		this.setResizable( false );
    		this.setLocation( parent.getWidth() / 4, parent.getHeight() / 6 );
    		this.setSize( 200, 100 );// frame.getWidth() / 2,
    														// frame.getHeight() / 3
    														// * 2 );
    //		width = dialog.getWidth() / 2;
     
    		JPanel panel = new JPanel();
    		panel.setLayout( null );
     
    		JLabel text = new JLabel( "Chargement en cours ..." );
    		text.setBounds( 20, 5, 180, 20 );
    		panel.add( text );
    		progress = new JProgressBar( 0, 100 );
    		progress.setBounds( 20, 50, 150, 20 );
    		progress.setString( "0 %" );
    		progress.setStringPainted(true);
    		progress.setValue( 0 );
    		panel.add( progress );
     
    		this.getContentPane().add( panel, null );
    		this.addWindowListener( new WindowAdapter()
    		{
    			public void windowClosing( WindowEvent e )
    			{
    			}
     
    			public void windowDeiconified( WindowEvent e )
    			{
    			}
     
    			public void windowIconified( WindowEvent e )
    			{
    			}
    		} );
    	}
     
     
     
    	public void setProgressBar( int value )
    	{
    		progress.setString( value + " %" );
    		progress.setStringPainted(true);
    		progress.setValue( value );
    	}	
    }

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Déjà, tous les traitement graphiques doivent être faits dans l'EDT, grâce à SwingUtilities.invokeLater(...)...

    C'est peut-être la cause, je ne sais pas...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    Le telechargement du fichier doit bloquer le thread d'affichage essaie de threader le téléchargement du fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public static class RecuperartionFile extends Thread
    {
    	File file = null;
            DownloadDlg dlg = null;
     
    	/** 
             * Creates a new instance of RecuperartionFile
             */
    	public RecuperartionFile( URL url )
    	{
    		dlg = new DownloadDlg( null, false );
    		dlg.setVisible( true );
     
    		run();
    		dlg.setVisible( false );
    	}
     
    	public void run()
    	{
                    try
    		{
    			URLConnection urlCon = url.openConnection();
     
    			dlg.setProgressBar( 50 );
    			InputStream is = urlCon.getInputStream();
    			if( is != null )
    			{
    				byte[] data = new byte[ 0 ];
    				byte[] buffer = new byte[ 1024 * 2 ];
    				int taille;
    				while( ( taille = is.read( buffer ) ) > 0 )
    				{ 
    					byte[] data2 = new byte[ data.length + taille ];
    					System.arraycopy( data, 0, data2, 0, ata.length );						
    					System.arraycopy( buffer, 0, data2, data.length, taille );
    					data = data2;
    				}
    				File fichier = new File( System.getProperty( "user.home" ), "img" );
    				FileOutputStream fos = new FileOutputStream( fichier );
    				fos.write( data );
    				fos.flush();
    				fos.close();
    				this.file = fichier;
    			}
    		} catch( java.io.IOException ex )
    		{
    			ex.printStackTrace();
    		}
    	}
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut
    le thread, j'y ait penser, mais c'est toujours pareil...

    Je pense qu'il y a un autre souci au niveau de mes autres classes.

    Merci de votre aide, quand même.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2010, 12h02
  2. afficher une fentre awwt/swing(come boite de dialogue)
    Par rddev dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/06/2007, 00h23
  3. JFrame swing boite de dialogue
    Par devAd dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 18/12/2006, 14h53
  4. [Swing] Boite de dialogue
    Par Manson dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 02/01/2006, 03h23
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo