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

Agents de placement/Fenêtres Java Discussion :

ProgressMonitor EDT / Delphi


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Par défaut ProgressMonitor EDT / Delphi
    Bonsoir, voici le problème que je rencontre :

    j'utilise une classe JAVA qui génère des bitmaps, via une Dll codé en delphi et qui utilise JNI.
    J'ai implémenté directement dans cette classe un progressMonitor qui indique le nombre de fichier créé. Lorsque j'appelle cette classe, tout se passe bien mon ProgressMonitor est bien rafraichi.
    Dans un deuxième temps j'ai fait une appli en java, qui utilise utilise directement la classe de génération des fichiers, seulement mon ProgressMonitor n'est jamais rafraichit. En recherchant sur le net j'ai trouvé qu'il s'agissait d'un problème lié à l'EDT. Pour résoudre ce problème, il semble que je soit obligé de gérer ça avec des threads.

    D'où les questions suivantes:
    je dois créer un thread pour la génération + un autre pour le progressmonitor?
    je peux tout réunir au sein d'un même thread?


    Voici une partie du 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
     
    /*classe MainForm de l'appli JAVA utilisant la classe de génération*/
     
        public static void main(String args[]) {
           /* int nbArg = args.length ;
            for (int i=0;i < nbArg ;i++)
            {
            System.out.println(args[i]);    
            }*/
            java.awt.EventQueue.invokeLater(new Runnable() {
                //@Override
                public void run() {
                new MainForm().setVisible(true);
                }
            });
     
    /*après ouverture du fichier contenant les info*/
     
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
        final JFileChooser jfc = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter( "xml", "xml");
        jfc.setCurrentDirectory( new File("C:\\JAVA\\Projet\\SubConvert\\SVN\\trunk\\Result\\img"));
        jfc.setFileFilter(  filter);
     
        if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
        {
            monFichier = jfc.getSelectedFile().getAbsolutePath();        
            LireFichier();
            PageGenerator.generatePage(fichierContenu);
           }     
    }
    PageGenerator est le nom de la classe que j'utilise pour générer les images, contenu dans un jar.
    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
     
     
    /*classe de génération des images*/
     
        public static int generatePage (String text)
        {
        java.awt.Frame frame = new java.awt.Frame();
        frame.setUndecorated(true);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
     
        int result = generatePage(text,frame);
        frame.setVisible(false);
        frame.dispose();
     
        return result;
        }
     
     
    public static int generatePage (String text, java.awt.Component parent)
        {
     
        try
        {        
            ProgressMonitor monitor = new ProgressMonitor (parent, new String ("Image Rendering in progress"), new String ("Parsing Data"), 0,100);
            monitor.setMillisToDecideToPopup(5);
            monitor.setMillisToPopup(5);
    ...
    ...
    ...
    monitor.setNote (new String ("Generating image " + (count +1) + " of " + nb_clips));
            monitor.setProgress (count);
            if (monitor.isCanceled ())
                return -1;


    Question supplémentaire, j'ai essayé de créer le progressmonitor dans la class mainform, et je le passe en paramètre à la fonction pagegenerator, mais dans ce cas impossible de compiler.

    Merci d'avance, si vous avez une bonne idée à me fournir.

    Cdlt

    JT

  2. #2
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    je dois créer un thread pour la génération + un autre pour le progressmonitor?
    je peux tout réunir au sein d'un même thread?
    non, le progressmonitor reste dans le thread principal, il faut mettre la génération dans un nouveau thread.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         Thread monThread = new Thread() {
              public void run() {
                  ecrireGeneration();                                
              }
          };
          monThread.start();
    ça devrait....

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 09h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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