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

 Java Discussion :

un scroll bar indésirable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut un scroll bar indésirable
    Bonjour,
    voilà mon problème : j'ai un JPanel qui contient un scrollbar et un autre Jpanel (Tracegrid) qui va servir pour dessiner un disque coloré

    voilà le code de ma classe principale Trace
    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
    class Trace extends JFrame{
    	JPanel principal ;
    	JScrollBar oneJScrollBar ;
    	TraceGrid g;
    	public Trace(){
    		super("testtracegrid");
    		this.principal = new JPanel();
    		this.principal.setLayout(new BorderLayout());
    		this.oneJScrollBar = new JScrollBar(JScrollBar.HORIZONTAL,0,20,0,100);
    		this.g = new TraceGrid();
     
    		AdjustmentListener adjustmentListener = new AdjustmentListener() {
    		      public void adjustmentValueChanged(AdjustmentEvent adjustmentEvent) {
    		       // System.out.println("Adjusted: " + adjustmentEvent.getValue());
    		        g.value = adjustmentEvent.getValue();
    		        g.repaint();
    		      }
    		    };
    		    oneJScrollBar.addAdjustmentListener(adjustmentListener);
     
     
     
    		    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setSize(400,500);
    			principal.add(oneJScrollBar,BorderLayout.SOUTH);
    			principal.add(g, BorderLayout.CENTER);
    			this.setContentPane(principal);
    			g.repaint();
    			this.setVisible(true);
     
     
    	}
    	}
    et celui de Trcegrid
    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
    public class TraceGrid extends JPanel{
    	int value = 0 ;
     
     
    	public TraceGrid(){
    		super();
     
    	}
    	public TraceGrid(double d, double e , int height , int width) {
    		super();
    		//super.setPreferredSize(new Dimension(width,height));
    		super.setBackground(new Color(201,201,214));
     
     
     
     
     
    	}
    	public void setvalue(int i ){
    		this.value = i ;
    	}
     
    	public void paintComponent(Graphics g) {
    		 this.setBackground(new Color(201,201,214));
    		 // System.out.println("value ="+value);
    		 // System.out.println("largeur du Jpanel"+this.getWidth() +" hauteur du Jpanel "+ this.getHeight());
    		  int i = (int) this.getWidth()/4 ;
    		  int j = (int) this.getHeight()/4 ;
    		 // System.out.println("i="+i +"j="+j);
    		 if(this.value <20)  g.setColor(Color.RED);
    		 if(this.value <30 && this.value >19) g.setColor(Color.RED);
    		 if( this.value >29 && this.value <40) g.setColor(Color.GREEN);
    		 if(this.value >39 && this.value <50) g.setColor(Color.CYAN);
    		 if(this.value >49 && this.value <60) g.setColor(Color.darkGray);
    		 if(this.value >59 && this.value <70) g.setColor(Color.MAGENTA);
    		 if(this.value >69 && this.value <80) g.setColor(Color.BLACK);
    		 if(this.value >79 && this.value <90) g.setColor(Color.GREEN);
    		 if(this.value > 89 && this.value <100) g.setColor(Color.YELLOW);
     
    		 g.fillOval(i,j, this.getWidth()/2, this.getHeight()/2);
     
     
     
     
    	}
    le problème est que quand je déplace mon scroll bar , le disque change de couleur mais en haut il apparait une trace d'un autre scroll bar , voilà je vous ai fait une capture d'écran

    comment résoudre ce problème

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et si tu remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    this.setContentPane(principal);
    par
    this.getContentPane().add(principal);

  3. #3
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut

    ça fait pareil
    de plus j'ai besoin de setContentPane car aprés j'ai besoin de détecter la taille de mon JPanel pour tracer autre chose , avec getContentPane().add() il me donne comme taille de JPanel ( hauteur 0 largeur 0) !!!!!

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par défaut
    Je ne reproduis pas ton problème chez moi (Win XP, jre 1.6.0_13). Quelle version de ton jre utilises tu?

    Enfin un composant JSlider serait, il me semble, bien plus adapté qu'un JScrollBar étant donné qu'il s'agit de sélectionner une couleur.
    Le but de la JScrollBar est plutôt de gérer un contenu a faire défiler. Il est cependant rare d'avoir besoin de la gérer soi-même. Utiliser un JScrollPane généralement plus simple et adapté.

  5. #5
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut
    le disque qui change juste de couleur n'est q'un petit exemple (en réalité j'ai une courbe que je dois afficher ) donc un scrollpane n'est pas vraiment adapté puisque je peut avoir plus que 10000 points à représenter )
    ma version de jre est 1.6.0_11-b03 pour Vista

    comment faire pour mettre à jour mon jre , faut le désinstaller et installer un nouveau ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par taha1 Voir le message
    JPanel pour tracer autre chose , avec getContentPane().add() il me donne comme taille de JPanel ( hauteur 0 largeur 0) !!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getcontentPane().setLayout(new BoderLayout());
    getContentPane.add(principal,BorderLayout.CENTER);

    devarit résoudre ça. Aussi, dans ta classe Trace, je te suggère de donnée des valeurs correct à minimumSize, preferredSize() et maximumSize(), sinon ce sera 0 et la plus part des layout manager te feron un panel de 0x0.

  7. #7
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut
    merci et pour la mise à jour de mon jre alors ? Uther ne re produit pas le meme problème que moi

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par défaut
    ma version de jre est 1.6.0_11-b03 pour Vista
    Le b03 semble indiquer qu'il s'agit d'une version beta, le problème viens probablement de là.
    Déjà que les version stables ne sont jamais parfaites, il faut toujours ce méfier de version non stables

    comment faire pour mettre à jour mon jre , faut le désinstaller et installer un nouveau ?
    Il te suffit de te connecter sur le site de Sun et de télécharger la dernière version. Actuellement il s'agit du JRE 6.0 update 14.

    Rien ne t'empêche d'installer plusieurs JRE en parallèle. Sous windows si tu utilise l'installateur classique, le dernier JRE installé devient le JRE par défaut : celui utilisé pour les plug-in des navigateurs, quand tu double-cliques sur une jar ou que tu tapes 'java ...' a la ligne de commande (si tu n'a pas redéfini le PATH)
    Par contre si tu peux toujours démarrer spécifiquement un programme avec une version souhaitée d'un JRE en utilisant le java.exe ou le javaw.exe du répertoire du JRE voulu

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

Discussions similaires

  1. Fenetre sans Scroll Bar
    Par nicolas78986 dans le forum MFC
    Réponses: 15
    Dernier message: 01/06/2007, 03h15
  2. Scroll bar dans un TPageControl
    Par richard038 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/08/2005, 12h53
  3. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 16h47
  4. [Débutant][JScript] Désactive ma scroll bar
    Par virgul dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2005, 16h55
  5. [BCB5] Défilement automatique des scroll bars
    Par Christophe Brun dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/12/2004, 16h59

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