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 :

Java Swing/AWT : Rafraichissement jSplitPane (Divider)


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Points : 66
    Points
    66
    Par défaut Java Swing/AWT : Rafraichissement jSplitPane (Divider)
    Bonjour,

    Os : Windows XP SP2
    Java : JRE 1.6
    Dev : Eclipse

    Voilà mon soucis, j'ai une un jSplitPane déclaré de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    split = new JSplitPane();
    		split.setUI(new SplitPaneUI());
    		//split.setOneTouchExpandable(true);
    J'utilise la classe SplitPaneUI pur surcharger l'apparence de mon jSplitPane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class SplitPaneUI extends BasicSplitPaneUI
    {
    	// ------------------------------------------------------------------------------------------------------------------
    	//  Custom installation methods
    	// ------------------------------------------------------------------------------------------------------------------
     
    	protected void installDefaults()
    	{
    		divider = new SplitPaneDivider(this);
    divider = new SplitPaneDivider(this); le Divider est surchargé pour afficher au millieu du séparateur un petit point incrusté pour déplacer la jSplitPane.
    Voici la surcharge avec la méthode paint :
    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
     
    public class SplitPaneDivider extends BasicSplitPaneDivider
    {
    	private static final Color highlightColor = new Color(255,255,255,200);
     
    	// ------------------------------------------------------------------------------------------------------------------
    	//  Constructors and getter/setter methods
    	// ------------------------------------------------------------------------------------------------------------------
     
    	public SplitPaneDivider(BasicSplitPaneUI ui)
    	{
    		super(ui);
    	}
     
    	// ------------------------------------------------------------------------------------------------------------------
    	//  Overwridden methods from the superclass(es)
    	// ------------------------------------------------------------------------------------------------------------------
     
    	public int getDividerSize()
    	{
    		return 7;
    	}
     
    	// ------------------------------------------------------------------------------------------------------------------
    	//  Custom painting methods
    	// ------------------------------------------------------------------------------------------------------------------
     
    	public void paint(Graphics g)
    	{
    		Graphics2D g2d = (Graphics2D)g;
    		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     
    		int h = this.getHeight();
    		int h2 = h/2;
     
    		int ow = getDividerSize() - 2;
    		int ow2 = ow/2;
     
    		Ellipse2D vShape = new Ellipse2D.Double(1,h2-ow2,ow,ow);
     
    		Paint p = new GradientPaint(1f, h2-ow2, Color.BLACK, ow,h2+ow2-1, Color.WHITE);
    		g2d.setPaint(p);
    		g2d.fill(vShape);
     
    		Shape vOldClip = g2d.getClip();
     
    		g2d.setClip(vShape);
    		g2d.setColor(highlightColor);
    		g2d.fillOval(1+ow2,h2,ow2,ow2);
     
    		g2d.setClip(vOldClip);
    	}
    }
    Voilà mon soucis dès que la declaration de mon jsplitpane devient celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     split = new JSplitPane();
    		split.setUI(new SplitPaneUI());
    		split.setOneTouchExpandable(true);
    Avec l'utilisation setOneTouchExpandable pour avoir les petits boutons de reduction ou d'agrandissement de la splitpane : je ne vois pas ces boutons sauf si je passe la souris dessus !!!!

    Je suppose que dans la méthode paint de la classe SplitPaneDivider je ne raffraichit pas la zone en question car si je ne fait pas de surcharge UI tout est normal !!!!

    Pourriez vous me dire comment dans la methode paint obliger le rafraichissement du divider complet et non pas seulement le milieu où se trouve le petit point incruster.
    où m'orienter vers autre chose si je fais complement fausse route

    cldt,

    vous pouvez voir la capture d'ecran :
    La premiere est normal : SansOnetoucexpandable
    La deuxieme on voit les petits boutons en haut uniquement quand la souris est passé dans la zone : AvecOneTouchExpandable
    Images attachées Images attachées   

  2. #2
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Points : 66
    Points
    66
    Par défaut
    J'ai trouvé,

    Il faut simplement appeler la methode super.paint(g); dans la méthode SplitPaneDivider:aint()


    Par contre le background des deux petits boutons est toujours d'une couleur différents de la barre de la splitPane !!!!??????

    Une idée peux être ?

Discussions similaires

  1. Interface graphique java swing awt toolkit
    Par MaxLaMenaX dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 06/11/2008, 16h39
  2. [JAVA]Jeu de carte - swing ? awt ?
    Par rXpCH dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 13/02/2008, 11h12
  3. Java - Swing et awt
    Par adilo dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 26/08/2006, 16h50
  4. faire un call graph en java avec awt/swing ou autre
    Par max25b dans le forum Graphisme
    Réponses: 2
    Dernier message: 06/05/2006, 15h32

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