+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Discussion: Shell ou composite

  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    septembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2011
    Messages : 104
    Points : 39
    Points
    39

    Par défaut Shell ou composite

    Voila, pendant un traitement (une fonction) je voudrais mettre un message d'avertissement suite à un problème.

    J'ai essayé un shell en SWT.APPLICATION_MODAL ou SWT.MODELESS mais le traitement continu.

    est-il possible de faire un message de confirmation en composite qui arrête le programme tant qu'il n'a pas cliquer sur le bouton ok et comment faire ? car j'ai essayé également un composite avec un bouton qui attends un true ce qui n'est pas terrible car je boucle à l'infini tant qu'il n'a pas cliqué sur le bouton et en plus ce composite ne s'affiche pas ?

    Une idée ?

  2. #2
    Modérateur
    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 : 30
    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 775
    Points
    3 775

    Par défaut

    Salut,

    Voici une implémentation qui utilise une boite de dialogue JFace (mais tu peux tout à fait obtenir la même chose avec un Shell SWT):
    Code :
    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
    public class SimpleTest {
     
      private static final class SimpleThread implements Runnable {
     
        @Override
        public synchronized void run() {
          System.out.println("Début du traitement !");
          Display.getDefault().asyncExec(new Runnable() {
            @Override
            public void run() {
              MessageDialog.open(MessageDialog.ERROR, null, "Erreur",
                  "Une erreur est survenu.", SWT.NONE);
              System.out.println("Libération du verrou !");
              SimpleThread.this.unlock();
            }
          });
          try {
            wait();
          } catch (final InterruptedException iException) {
            iException.printStackTrace();
          }
          System.out.println("Traitement fini !");
        }
     
        public synchronized void unlock() {
          notify();
        }
      }
     
      public static void main(final String[] args) {
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new GridLayout(1, false));
     
        final Button button = new Button(shell, SWT.PUSH);
        final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
        button.setLayoutData(gridData);
        button.setText("Lancer la tâche");
        button.addSelectionListener(new SelectionAdapter() {
          @Override
          public void widgetSelected(final SelectionEvent e) {
            new Thread(new SimpleThread()).start();
          }
        });
     
        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
          if (!display.readAndDispatch())
            display.sleep();
        }
        display.dispose();
      }
    }
    Tu as d'ailleurs un excellent tutoriel sur les Threads et leur communications à regarder.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •