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

Agents de placement/Fenêtres Java Discussion :

JToolBar - Survol bordure JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 24
    Points
    24
    Par défaut JToolBar - Survol bordure JFrame
    Bonsoir,

    Je possède une JFrame d'accueil qui va prendre la taille complète de l'écran :

    setExtendedState(JFrame.MAXIMIZED_BOTH);

    Elle est en setUndecorated(true);

    Elle possède un JDesktopPane en BorderLayout.CENTER (je travaille avec des JInternalFrame).

    J'aimerai savoir s'il est possible de faire apparaître une JToolBar lorsque le curseur de ma souris est sur la bordure EAST de ma JFrame (tel windows 8)
    et lorsque le curseur n'est plus sur la JToolBar elle se replie comme le menu de recherche de windows 8.

    Cordialement,

    Laurent

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu devrais pouvoir t'en sortir avec le JXCollapsiblePane de swing labs + un mouse listener pour faire apparaitre / disparaitre lors des event mouse enter / mouse out.

    http://download.java.net/javadesktop...siblePane.html

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Merci !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 24
    Points
    24
    Par défaut JXCollapsiblePane
    Bonjour,

    Je reviens vers vous, car j'ai un petit problème avec le show/hide du JXCollapsiblePane.

    J'ai bien ajouter une MouseListener dessus mais le problème est de lui dire de s'afficher lors du MouseEntered

    et de se masquer lors du MouseExited. J'ai essayé beaucoup de manipulations, notamment avec la javadoc

    mais le problème et que dans mon cas, je ne travaille pas avec un JToggleButton ...

    Merci pour votre aide.

    Cordialement,

    Charlys1333

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le problème c'est que les évènement souris arrivent directement dans les composant sans passer par la case du Collapsible. La solution c'est d'utiliser aussi un JLayer qui va recevoir les mouseEvent pour les traiter.


    voilà une factory que j'avais créée à un moment pour me faciliter le travail. Si ça peux t'aider.


    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    package com.company.swing.component;
     
    import java.awt.AWTEvent;
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.image.BufferedImage;
    import java.awt.image.ConvolveOp;
    import java.awt.image.Kernel;
     
    import javax.swing.JComponent;
    import javax.swing.JLayer;
    import javax.swing.Timer;
    import javax.swing.plaf.LayerUI;
     
    import org.jdesktop.swingx.JXCollapsiblePane;
     
    public class AutoCollapsiblePaneFactory {
    	private static final class LayerUIExtension extends
    			LayerUI<JXCollapsiblePane> implements ActionListener {
    		private static final Color COLOR2 = new Color(128,128,128,0);
    		private static final Color COLOR1 = new Color(128,128,128,255);
    		private final JXCollapsiblePane pane;
    		private volatile boolean aimCollapsed = true;
    		private Timer collapseTimer;
     
    		private LayerUIExtension(JXCollapsiblePane pane) {
    			this.pane = pane;
    			collapseTimer = new Timer(3000, this);
    			collapseTimer.setRepeats(false);
     
     
    		}
     
    		public void installUI(JComponent c) {
    		    super.installUI(c);
    		    ((JLayer) c).setLayerEventMask(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
    		    collapseTimer.start();
    		}
     
    		public void uninstallUI(JComponent c) {
    		    super.uninstallUI(c);
    		    ((JLayer) c).setLayerEventMask(0);
    		    collapseTimer.stop();
     
    		}
    		public void paint (Graphics g, JComponent c) {
    				super.paint(g,c);
    		  }
     
    		public void eventDispatched(AWTEvent e, JLayer<? extends JXCollapsiblePane> l) {
    //			System.out.println(e);
    		    if (e.getID()==MouseEvent.MOUSE_ENTERED)
    		    	switchState(false);
    		    if (e.getID()==MouseEvent.MOUSE_EXITED || e.getID()==MouseEvent.MOUSE_DRAGGED)
    		    	switchState(true);
    		}
     
    		private void switchState(boolean aimCollapsed) {
    			this.aimCollapsed=aimCollapsed;
    			if (aimCollapsed)
    				collapseTimer.restart();
    			else{
    				collapseTimer.stop();
    				pane.setCollapsed(false);
    			}
     
    		}
     
    		/**
                     * Called by timer
                     */
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			pane.setCollapsed(true);
    		}
    	}
     
     
     
    	public static JLayer<JXCollapsiblePane> create(JComponent content,JXCollapsiblePane.Direction direction){
    		return create(content,direction,20);
    	}
    	public static JLayer<JXCollapsiblePane> create(JXCollapsiblePane.Direction direction){
    		return create(null,direction);
    	}
    	public static JLayer<JXCollapsiblePane> create(JXCollapsiblePane.Direction direction, int minSize){
    		return create(null,direction,minSize);
    	}
    	public static JLayer<JXCollapsiblePane> create(JComponent content,JXCollapsiblePane.Direction direction, final int minSize){
    		final JXCollapsiblePane pane = new JXCollapsiblePane(direction){
     
    				@Override
    				public Dimension getPreferredSize() {
    					// TODO Auto-generated method stub
    					Dimension d =  super.getPreferredSize();
    					if (d.width<minSize)
    						d.width=minSize;
    					if (d.height<minSize)
    						d.height=minSize;
    			        return d;
    				}
     
    		};
    		if (content!=null)
    			pane.setContentPane(content);
    		pane.setAnimated(true);;
    		pane.setCollapsed(false);
    		JLayer<JXCollapsiblePane> layer = new JLayer<>(pane, new LayerUIExtension(pane));
    		return layer;
    	}
     
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 24
    Points
    24
    Par défaut JXCollapsiblePane
    Bonjour,

    Tout d'abord merci pour votre réponse. Je vais regarder au niveau du layer comme indiqué et m'aider du code.

    Si entre temps quelqu'un a une piste ou autre chose merci de me faire signe

    Cordialement,

    Charlys1333

Discussions similaires

  1. enlever la bordure windows d'une JFrame
    Par pierrot2908 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/04/2007, 16h59
  2. Image de fond sur une JFrame et dans une JToolBar
    Par FredPsy dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 01/02/2007, 19h12
  3. JFrame sans entête/bordure
    Par biozaxx dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 20/01/2006, 21h49
  4. [JFrame] Taille de la fenêtre complète (avec titre et bordures)
    Par RXN dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 24/09/2005, 00h35
  5. JToolBar et JFrame
    Par alex1er dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/08/2004, 10h11

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