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

API standards et tierces Java Discussion :

Ne pas afficher le navigateur lors de telechargement


Sujet :

API standards et tierces Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    ne me reste plus qu'a mettre tout cela dans un dossier, et faire en sorte que quand tous les chargements sont fini lancer ma classe (methode ) de concatenations des fichiers. la aussi je n'ai du mal...
    Tu veux dire qu'une fois téléchargés, tous ces fichiers doivent être fusionné en un seul ?
    Citation Envoyé par K2carca Voir le message
    c'est a dire que mon chargement et dans une classe "my window" puis j'ai cree une classe execution qui concatène. sauf que il me faut attendre la fin du chargement pour lancer la 2eme classe depuis la 1ere.
    A priori oui (enfin pas besoin de faire deux classes, une classe avec deux méthodes par exemple pourrait faire la même chose). Éventuellement, si les fichiers sont chargés dans l'ordre, on peut commencer la fusion dès les deux premiers chargés. On peut aussi télécharger plusieurs fichiers à la fois, en utilisant un ExecutorService par exemple. Mais est-ce que c'est vraiment nécessaire d'aller à ce niveau de complexité ? A quoi va servir le fichier final voulu ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    le fichier final voulu va servir pour alimenter un système tier de preparation de vols.
    les fichiers en question sont des predictions météo.
    j'ai déjà essayé de mettre la methode de concatenation dans la même méthode le problème:
    1/ c'est quelle commence avant que tout les fichiers soient téléchargés
    2/ en fait cette méthode lance un .bash et donc comme les fichiers ne sont pas tous téléchargés il ne fonctionne pas.

    pour cela je souhaite le faire demarrer apres un temps défini assurant que les fichiers seront chargés. indiquer si possible par une pop_up l'état genre quand je clique sur ok, une pop-up avec barre de progression s'ouvre, puis une fois terminé une autre informe "telechargement fini voulez vous concaténer ? etc...

    mais pour la barre de progression je suis pas sur que je puisse faire cela. mes connaissances sont trop limites et puis de la a lire le flux rentrant ca va etre super compliqué

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par K2carca Voir le message
    le fichier final voulu va servir pour alimenter un système tier de preparation de vols.
    les fichiers en question sont des predictions météo.
    j'ai déjà essayé de mettre la methode de concatenation dans la même méthode le problème:
    1/ c'est quelle commence avant que tout les fichiers soient téléchargés
    2/ en fait cette méthode lance un .bash et donc comme les fichiers ne sont pas tous téléchargés il ne fonctionne pas.
    Avec Desktop::browse le téléchargement était asynchronie (la méthode rend la main bien avant que la ressource ne soit chargée, voire même avant que le navigateur ne soit démaré. Ceci n'arrive pas avec la méthode que je t'ai donné. Elle est synchrone. D'ailleurs, si tu lances de nombreux téléchargement depuis une action Swing, ça va geler l'interface : il faudrait utiliser un SwingWorker pour l'éviter.

    Citation Envoyé par K2carca Voir le message
    pour cela je souhaite le faire demarrer apres un temps défini assurant que les fichiers seront chargés.
    Ceci est donc inutile. Même si tu utilises un ExecutionService pour paralléliser les téléchargements, on peut faire qu'on attend qu'ils soient tous terminé pour faire autre chose, ou attendre même que certains soient terminés pour commencer une "concaténation".

    Citation Envoyé par K2carca Voir le message
    indiquer si possible par une pop_up l'état genre quand je clique sur ok, une pop-up avec barre de progression s'ouvre, puis une fois terminé une autre informe "telechargement fini voulez vous concaténer ? etc...
    mais pour la barre de progression je suis pas sur que je puisse faire cela. mes connaissances sont trop limites et puis de la a lire le flux rentrant ca va etre super compliqué
    On peut faire facilement une barre de progression avec un SwingWorker.
    Un exemple avec un compteur :
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    public class DemoCompteur extends JFrame {
     
    	private JPanel contentPane;
    	private static JLabel label1;
    	private static JProgressBar progressBar;
    	private JPanel panel;
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					DemoCompteur frame = new DemoCompteur();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/**
             * Create the frame.
             */
    	public DemoCompteur() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 602, 529);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		GridBagLayout gbl_contentPane = new GridBagLayout();
    		gbl_contentPane.columnWidths = new int[]{0, 0};
    		gbl_contentPane.rowHeights = new int[]{0, 0};
    		gbl_contentPane.columnWeights = new double[]{1.0, Double.MIN_VALUE};
    		gbl_contentPane.rowWeights = new double[]{0.0, Double.MIN_VALUE};
    		contentPane.setLayout(gbl_contentPane);
     
    		panel = new JPanel();
    		GridBagConstraints gbc_panel = new GridBagConstraints();
    		gbc_panel.fill = GridBagConstraints.BOTH;
    		gbc_panel.gridx = 0;
    		gbc_panel.gridy = 0;
    		contentPane.add(panel, gbc_panel);
    		GridBagLayout gbl_panel = new GridBagLayout();
    		gbl_panel.columnWidths = new int[]{0, 0};
    		gbl_panel.rowHeights = new int[]{0, 0, 0, 0};
    		gbl_panel.columnWeights = new double[]{1.0, Double.MIN_VALUE};
    		gbl_panel.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
    		panel.setLayout(gbl_panel);
     
    		label1 = new JLabel("Compteur");
    		GridBagConstraints gbc_label1 = new GridBagConstraints();
    		gbc_label1.fill = GridBagConstraints.HORIZONTAL;
    		gbc_label1.insets = new Insets(0, 0, 5, 0);
    		gbc_label1.gridx = 0;
    		gbc_label1.gridy = 0;
    		panel.add(label1, gbc_label1);
    		label1.setHorizontalAlignment(SwingConstants.CENTER);
     
    		progressBar = new JProgressBar();
    		//progressBar.setMaximum(1000000);
    		GridBagConstraints gbc_progressBar = new GridBagConstraints();
    		gbc_progressBar.fill = GridBagConstraints.HORIZONTAL;
    		gbc_progressBar.insets = new Insets(0, 0, 5, 0);
    		gbc_progressBar.gridx = 0;
    		gbc_progressBar.gridy = 1;
    		panel.add(progressBar, gbc_progressBar);
     
    		JButton btn1 = new JButton("On compte");
    		GridBagConstraints gbc_btn1 = new GridBagConstraints();
    		gbc_btn1.fill = GridBagConstraints.HORIZONTAL;
    		gbc_btn1.gridx = 0;
    		gbc_btn1.gridy = 2;
    		panel.add(btn1, gbc_btn1);
    		btn1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    					SwingWorker<Object, String> worker = new SwingWorker<Object, String>() {
    						@Override
    						protected Object doInBackground() throws Exception {
     
    							calcul(n->publish(n), p->setProgress(p));
    							return null;
     
    						}
     
    						@Override
    						protected void process(List<String> chunks) {
    							if ( chunks.size()>0 ) {
    								label1.setText(chunks.get(chunks.size()-1)+"/"+N);
    							}
    						}
     
    					};
    					// permet à la progressbar de progresser
    					worker.addPropertyChangeListener(e-> {
    						if ("progress".equals(e.getPropertyName())) {
    							progressBar.setValue((int)e.getNewValue());	
    						}
    					});
    					worker.execute();
    			}
    		});
    	}
     
    	private static int N = 10000;
    	void calcul(Consumer<String> publisherCallback, Consumer<Integer> progressCallBack) {
    		for (int n=1; n<=N; n++){
    			publisherCallback.accept(String.valueOf(n));
    			progressCallBack.accept((int)(100*((double)n)/N));
    			try {
    				Thread.sleep(10);
    			} catch (InterruptedException e) {
    			}
    		}
    	}
     
    }
    La méthode qui fait le traitement c'est calcul. Si à la place de la boucle for (int n=1; n<=N; n++){ tu fais une boucle sur une List<URL>, et que à la place du Thread.sleep qui ici simule un traitement, tu appelles la méthode downloadFromURL, tu as plus ou moins ce que tu cherches à faire. Il faut juste remplacer la frame par un dialogue modal, et adapter l'interface. A noter que dans la méthode calcul (qu'il faudrait renommer en downloadURLs()), publisherCallback permet de modifier le texte qui s'affiche au dessus de la progress bar (donc tu peux tout à fait passer un "chargement de " + url + numerourlcourante+"/"+nombre total d'urls) et progressCallback permet la progression (il faut donc absolument passer un pourcentage donc numerourlcourante/nombre total d'urls )
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Ne pas afficher d'alert lors de l'utilisation de shutdown.exe C#
    Par Florian_mbf dans le forum Développement Windows
    Réponses: 2
    Dernier message: 02/04/2014, 09h38
  2. Ne pas afficher le menu lors d'un click droit
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2013, 10h59
  3. Réponses: 10
    Dernier message: 16/10/2008, 16h27
  4. Console JAVA à ne pas afficher
    Par BakaOnigiri dans le forum Général Java
    Réponses: 2
    Dernier message: 08/01/2008, 15h31
  5. Réponses: 2
    Dernier message: 11/12/2007, 14h58

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