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

AWT/Swing Java Discussion :

[swing]Couleur de l'ascenceur d'un JScrollBar


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Par défaut [swing]Couleur de l'ascenceur d'un JScrollBar
    Bonjour,

    j'ai un JscrollPane qui contient un JScrollBar et je ne parvient pas à changer la couleur de l'ascenceur en lui-même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            JTable alarmsTable = new JTable(model);
            JScrollPane scrollPane = new JScrollPane(alarmsTable);
            scrollPane.getVerticalScrollBar().setForeground(Color.orange);
            scrollPane.setOpaque(false);
            scrollPane.getViewport().setOpaque(false);
            scrollPane.setViewportBorder(null);
    Pourtant un setBackground() fonctionne si placé au même endroit...

    Merci d'avance,

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    je pense que le setBackground() est bien la méthode a utilisé

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Par défaut
    Je me suis mal exprimé, en fait setBackground() modifie la barre dans laquelle l'ascenceur se déplace mais pas l'ascenceur lui-même.

    Désolé de ne pas avoir été clair la première fois

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    il va falloir que tu étendes BasicScrollBarUI

    et que tu modifie la couleur
    color = UIManager.getColor("ScrollBar.trackHighlightForeground");


    je ne vois que ça

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Par défaut
    Citation Envoyé par PoPeio
    il va falloir que tu étendes BasicScrollBarUI

    et que tu modifie la couleur
    color = UIManager.getColor("ScrollBar.trackHighlightForeground");


    je ne vois que ça
    J'avoue que j'ai un peu de mal à saisir la ligne pour modifier la couleur.

    J'ai essayé ca, mais ca semble ne pas fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        class OrangeScrollBarUI extends BasicScrollBarUI{
        	OrangeScrollBarUI(){
        		super();
        		this.trackHighlightColor = Color.orange;
        	}
        }

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Par défaut
    Bon, j'avance, en fait il faut redéfinir la méthode ConfigureScrollBarColors() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        	protected void configureScrollBarColors(){
        	    LookAndFeel.installColors(scrollbar, "ScrollBar.background","ScrollBar.foreground");
        	    //thumbHighlightColor = UIManager.getColor("ScrollBar.thumbHighlight");
        	    //thumbLightShadowColor = UIManager.getColor("ScrollBar.thumbShadow");
        	    //thumbDarkShadowColor = UIManager.getColor("ScrollBar.thumbDarkShadow");
        	    //thumbColor = UIManager.getColor("ScrollBar.thumb");
        	    thumbHighlightColor = new Color(255,165,30);
        	    thumbLightShadowColor = Color.ORANGE;
        	    thumbDarkShadowColor = new Color(255,200,0);
        	    thumbColor = new Color(255,152,0);
     
        	    trackColor = UIManager.getColor("ScrollBar.track");
        	    trackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
        	}
    Les lignes avec thumb correspondent à l'ascenceur en lui-même, celles avec track correspondent au "rail" dans lequel se déplace l'ascenceur.

    Reste que les couleurs des boutons en haut et en bas ne sont pas modifiées. Je continue à chercher

  7. #7
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    appel lorsque tu crée ta scrollBar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    OrangeScrollBarUI ui = new OrangeScrollBarUI();
    scrollBar.setUI(ui);
    ensuite estension de BasibScrollBar

    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
     
    public class OrangeScrollBarUI extends BasicScrollBarUI
    {
    private Grid thumbGrid;
    private Grid highlightGrid;
     
     protected void configureScrollBarColors() {
            super.configureScrollBarColors();
    	Color color = taCouleurdeFond;
            if (color != null && trackColor != null) {
                thumbGrid = Grid.getGrid(color, trackColor);
            }
     
    	color = taCouleurdudesus;
            if (color != null && trackHighlightColor != null) {
                highlightGrid = Grid.getGrid(color, trackHighlightColor);
            }
        }

  8. #8
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    exact j'étais en train de te répondre !!

    par contre j'ai pas tésté mais bon la solution est par là

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Par défaut
    Ca y est, il fallait également redéfinir les méthodes suivantes :
    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
        	protected JButton createDecreaseButton(int orientation) {
        	    return new BasicArrowButton(orientation,
        	    					 UIManager.getColor("ScrollBar.thumb"),
        		                     UIManager.getColor("ScrollBar.thumbShadow"),
        		                     UIManager.getColor("ScrollBar.thumbDarkShadow"),
        		                     UIManager.getColor("ScrollBar.thumbHighlight"));
        	}
     
     		protected JButton createIncreaseButton(int orientation) {
        	    return new BasicArrowButton(orientation,
        		                     UIManager.getColor("ScrollBar.thumb"),
        		                     UIManager.getColor("ScrollBar.thumbShadow"),
        		                     UIManager.getColor("ScrollBar.thumbDarkShadow"),
        		                     UIManager.getColor("ScrollBar.thumbHighlight"));
        	}
    Il faut remplacer les couleurs dans l'appel du constructeur et le tour est joué

    Merci beaucoup PoPeio de m'avoir mis sur la voie !

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

Discussions similaires

  1. [SWING][JAVA2D] définir le couleur transparente d'un PNG
    Par TreizeSegments dans le forum 2D
    Réponses: 16
    Dernier message: 03/08/2009, 10h39
  2. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  3. [Swing] Couleur de fond d'un JDesktopPane
    Par calogerogigante dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/03/2006, 17h53
  4. [SWING] Fichier Properties et Couleurs
    Par Nanoulov dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 14/11/2005, 22h34
  5. [JScrollBar] Couleur de fond
    Par Guybrush dans le forum Composants
    Réponses: 3
    Dernier message: 07/11/2005, 09h30

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