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 :

Changer la taille d'une Progressbar


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut Changer la taille d'une Progressbar
    Bonjour,

    Je souhaiterais me développer un classe composite qui affiche un bouton pour lancer une tache, puis que le bouton se remplace par une barre de progression pendant la tache en cour, pour au final redevenir un bouton.

    Actuellement, j'ai deux soucis. Comment fait ton pour inverser les composants en live ?
    En swing, la chose était simple. En le supprimant du contener parent et en ajoutant le nouveau.

    Le deuxième soucis, est que la progressbar ne veux pas changer de taille !!
    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
    public class CompositeButtonState extends Composite{
     
    	private Button			buttonState = null;
    	private ProgressBar		progressState = null;
     
    	private int				state = -1;
     
    	public CompositeButtonState(Composite parent, int style) {
    		super(parent, style);
     
    		GridLayout grid = new GridLayout();
    		grid.numColumns = 1;
    		this.setLayout(grid);
    		this.setBackground(new Color(null, 0, 255, 255));
     
    		buttonState = new Button(this, SWT.PUSH);
    		buttonState.setSize(50, 50);
     
    		progressState = new ProgressBar(this, SWT.SMOOTH);
    		progressState.setMaximum(0);
    		progressState.setMaximum(100);
    		progressState.setSize(50, 50);
     
    		this.setState(0, 0);
    	}
     
    	public void addSelectionListener(SelectionListener listener){
    		buttonState.addSelectionListener(listener);
    	}
     
    	public int getState() {
    		return state;
    	}
     
    	public void setState(int state, int progress){
    		if(this.state != state){
    			switch(state){
    			case 0 : //wait start
    				buttonState.setImage(Activator.getDefault().getImageRegistry().get(Activator.ICON_WAIT_START));
    				buttonState.setText("");
    				buttonState.setVisible(true);
    				buttonState.setSize(50,50);
    				progressState.setVisible(false);
    				this.layout();
    				break;
    			case 1 : // progress
    				buttonState.setVisible(false);
    				progressState.setVisible(true);
    				progressState.setSize(50,50);
    				this.layout();
    				break;
    			case 2 : // abort
    				break;
    			case 3 : // finished
    				buttonState.setImage(Activator.getDefault().getImageRegistry().get(Activator.ICON_FINISHED));
    				buttonState.setVisible(true);
    				progressState.setVisible(false);
    				break;
    			}
    			this.state = state;
    		}
     
    		if(this.state == 1){
    			progressState.setSelection(progress);
    		}
    	}
    }


    merci d'avance.
    Croc

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    A priori, 2 possibilités :
    - Création / suppression à la volée du bouton et de la progress bar en fonction des besoins. La méthode dispose() permet de supprimer un composant.
    - Créer le bouton et la progress bar et les rendre visible / invisible en fonction du besoin.

    Il faudra également faire un pack() à chaque fois pour forcer le composite parent à recomposer son layout.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bonjour et merci pour la réponse.

    Actuellement, j'utilise le setVisible. Mais cela les laisse la ou ils ont été ancrer. Je n'utilise peut être pas le bon layout.

    J'utilise un GridLayout de 1 colonne.

    Je ne connait pas encore très bien les propriété des layouts swt.

    Je vais essayé avec un autre layout.
    Sinon, je tenterais la version création-suppression qui ne me plait gère.

    Merci.

  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 : 41
    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
    Par défaut
    Salut,

    Pour ton problème d'ancrage dans le layout, sache que tu peux gérer les composants invisible dans un GridLayout. Jette un œil sur ce snippet, exécute le et tu auras la solution ^^

    Voilà, à+
    Gueritarish

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    La solution marche très bien.
    Merci.

    Toutefois, le fait que la progressBar ne s'adapte pas rend la chose beaucoup mois ... pratique.

    Que faire ?

    Si toutefois le progressbar ne veux pas m'aider, je peux peut être définir un rectangle sur mon bouton ??!!
    Une sorte d'icône dynamique.


    Ou alors, j'utilise un composant swing.
    Étendre un bouton en swing est une vrai bonheur. Mais mélanger les deux m'emballe pas des masses.

    Résultat actuel a gauche.
    Edit : petit exemple de ce que je veux a droite (fait en swing en 40 minutes :s)
    Images attachées Images attachées   

  6. #6
    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 : 41
    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
    Par défaut
    Salut,

    Citation Envoyé par croc14
    Toutefois, le fait que la progressBar ne s'adapte pas rend la chose beaucoup mois ... pratique.
    Qu'entends-tu par là? C'est le fait que la ProgressBar ne prenne pas les mêmes "dimensions" que le bouton qui te gène?
    Si c'est juste ça, sache que tu peux donner une taille minimale à ta ProgressBar grâce à un GridData.
    Si c'est le bon "problème", sache que tu peux le résoudre facilement ^^

    Voilà, à+
    Gueritarish

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

Discussions similaires

  1. Changer la taille d'une image chargée avec Loader
    Par DeezerD dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 29/01/2008, 17h55
  2. Comment changer la taille d'une partition ?
    Par sami_c dans le forum Debian
    Réponses: 1
    Dernier message: 07/06/2007, 19h45
  3. changer la taille d'une plage après l'avoir nommer
    Par b.amine dans le forum Excel
    Réponses: 1
    Dernier message: 12/04/2007, 15h39
  4. comment changer la taille d'une fenetre html
    Par coelho dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/12/2006, 12h48
  5. Changer la taille d'une police SDL_ttf.
    Par Kerwando dans le forum SDL
    Réponses: 4
    Dernier message: 06/06/2006, 12h10

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