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

SWT/JFace Java Discussion :

Icone SWT reste en quittant l'application


Sujet :

SWT/JFace Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut Icone SWT reste en quittant l'application
    Bonjour, j'espère que quelqu'un pourra m'aider, car je n'arrive pas a faire disparaître du premier coup l'icone de mon application dans le system Tray.

    QUand je quitte l'application, il faut que je passe la souris sur l'icone pour la faire disparaître, elle ne veut pas le faire tout seul, et du coup lorsqu'on s'amuse à le lancer- arrêter , je peux me retrouver avec un system tray rempli d'icone.

    pourtant j'ai tenté le dispose() de l'image, du shell ... je ne vois pas

    cdt

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Tu pourrais nous donner une version minimale (j'insiste sur le minimal) de ton application pour voir ce qui pourrait mal se passer?
    Notamment la partie concernant la gestion du Shell et des images.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    mais bien sur voila

    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
    final Display display = new Display();
    final Shell shell = new Shell(display);
     
    image = new Image(display, ClassLoader.getSystemClassLoader().getClass().getResourceAsStream("/dent.png"));
     
     tray = display.getSystemTray();
    		if (tray == null) {
    		  System.out.println("The system tray non disponible");
    		} else {
    		 item = new TrayItem(tray, SWT.NONE);
    		  item.setToolTip(tip);
    ...
     
          item.setImage(image); 
    ...
     
    while (!shell.isDisposed()) {
    		  if (!display.readAndDispatch())
    			  display.sleep();
    		}
     
    		image.dispose();
    		display.dispose();
    En résumé les interactions entre le shell, l'image et le TrayItem, mais je ne sais pas si ça suffira, je suis à dispo pour tout renseignement supplémentaire

    Merci de ton aide

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Tu devrais essayer avec un ImageDescriptor (tu as des méthodes de création statiques, notamment à partir d'une URL). L'intérêt principal est que le cycle de vie de l'image est, du coup, géré par le système.
    Mais je ne pense pas que le problème soit là. Peut-être que tu ouvres des Thread qui sont mal fermé dans ton programme...
    En tout cas, ça ressemble pas à une terminaison de programme normale.
    Pour l'ImageDescriptor, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageDescriptor.createFromURL(ClassLoader.getSystemClassLoader().getClass().getResource("/dent.png")).createImage();
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    Apres essai, effectivement ça ne change rien

    je vais investiguer du coté de mauvaise fermeture de Threads
    merci d'avoir essayé

  6. #6
    Membre averti
    Homme Profil pro
    Dev
    Inscrit en
    Novembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Novembre 2006
    Messages : 112
    Points : 350
    Points
    350
    Par défaut
    Bonjour
    tu devrais essayer de "Disposer" les objets tray et item .

  7. #7
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par miaous Voir le message
    Bonjour
    tu devrais essayer de "Disposer" les objets tray et item .
    Inutile à mon avis (sans vouloir te vexer). Une des règles de SWT: quand on dispose le parent, les enfants sont disposé aussi. Et Tray est un enfant de Display. Quant à TrayItem, c'est un enfant de Tray.

    Essaye de vérifier si tu n'as pas défini un démon ou si tu n'as pas un Thread non fermé à la fin de ton programme../
    Pas de questions technique par MP, les forums sont là pour ça.

  8. #8
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Autre question, est-ce que tu fais un System.exit() à la fin de ton programme? Est-ce qu'il est possible qu'il arrive avant que le Display ne soit "disposé"?
    J'arrive à reproduire ton cas en faisant:
    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
    final Display display = new Display();
        final Shell createdShell = createContent(display);
        final Image image =
          ImageDescriptor.createFromFile(getClass(), "test.jpg").createImage();
        final Tray systemTray = display.getSystemTray();
        if (systemTray != null) {
          final TrayItem trayItem = new TrayItem(systemTray, SWT.NONE);
          trayItem.setToolTipText("tip");
          trayItem.setImage(image);
        }
        createdShell.open();
        while (!createdShell.isDisposed()) {
          if (!display.readAndDispatch())
            display.sleep();
        }
        System.exit(0);
        display.dispose();
    Bon, la méthode createContent() est une méthode perso pour construire le contenu de mon Shell mais ce n'est pas improtant.
    Le plus important est le fait que si le Display (et donc le TrayItem) n'est pas bien "disposé", il va te rester cette icône dans la zone de notification.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    Eh non, pas de
    Pour expliquer plus en détail, cette partie du code est lancée dans la méthode static main
    et je lance des Threads de connection Socket et WebSocket, mais je ne vois pas de sortie malpropre de ce coté là ....
    ou alors pas assez cherché...

  10. #10
    Membre averti
    Homme Profil pro
    Dev
    Inscrit en
    Novembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Novembre 2006
    Messages : 112
    Points : 350
    Points
    350
    Par défaut
    Pour voir si tu as un appel de , redéfini le SecurityManager pour avoir un message (méthode checkExit ).

    Regarde aussi si tu n'as pas d'exception lancer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display.readAndDispatch()
    .

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut Résolu
    j'ai décidé de regarder finalement ma procedure d'exit de mon application et c'est ça qui ne marchait pas ...

    Puis à force d'utiliser la console d'eclipse, je faisais un exit forcé.

    Bref, j'ai utilisé un boolean afin de poser une condition d’arrêt à ma lecture d’évènements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (!shell.isDisposed() && !isDead ) {
    		  if (!display.readAndDispatch())
     
    			  display.sleep();
    		}
    sinon j'ai un autre souci, qui est posté ailleurs ( je fais de la pub) pour un pb de progressbar sous MACOSX

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ALLEGRO] Ajout d'une icone et du titre dans l'application
    Par Corbeau_1945 dans le forum Allegro
    Réponses: 2
    Dernier message: 25/02/2008, 19h05
  2. Icones dans les ressources de l'application
    Par Arthur59 dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/08/2007, 20h31
  3. Réponses: 11
    Dernier message: 07/06/2007, 16h21
  4. [VB]fichier XL reste verrouillé apres fermeture application
    Par abdou.sahraoui dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/01/2006, 15h34
  5. Réponses: 8
    Dernier message: 17/12/2004, 16h58

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