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 :

MousePressed sur JPanel et JLabel


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut MousePressed sur JPanel et JLabel
    Bonjour,
    J'ai un JPanel avec un JLabel.
    Dès que je clique sur le JPanel, il change bien la couleur de mon panel (avec la fonction), mais si mon curseur est dans le JLabel, rien ne se passe.
    Avez vous une idée?
    Merci d'avance.


    Mon code :
    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
     
    JLabel label = new JLabel( "toto" );
    JPanel panel = new JPanel();
    panel.add( label);
    panel.addMouseListener( new MouseAdapter()
    {	
    public void mousePressed( MouseEvent e )
    {}
    public void mouseReleased(MouseEvent e) 
    {
         ChangeColorPanel();
    }
    } );
     
    label.addMouseListener( new MouseAdapter()
    {	
    public void mousePressed( MouseEvent e )
    {}
    public void mouseReleased(MouseEvent e) 
    {
         ChangeColorPanel();
    }
    } );

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Essaie d'ajouter également ton JLabel à l'action voulue. Rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    label.addMouseListener( new MouseAdapter()
    {	
    public void mousePressed( MouseEvent e )
    {}
    public void mouseReleased(MouseEvent e) 
    {
         ChangeColorPanel();
    }
    } );
    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut
    C'est fait, mais cela ne marche pas

    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
    JLabel label = new JLabel( "toto" );
    JPanel panel = new JPanel();
    panel.add( label);
    panel.addMouseListener( new MouseAdapter()
    {	
    public void mousePressed( MouseEvent e )
    {}
    public void mouseReleased(MouseEvent e) 
    {
         ChangeColorPanel();
    }
    } );
     
    label.addMouseListener( new MouseAdapter()
    {	
    public void mousePressed( MouseEvent e )
    {}
    public void mouseReleased(MouseEvent e) 
    {
         ChangeColorPanel();
    }
    } );

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Elle fait quoi la méthode ChangeColorPanel(); ? (montre le code)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Par défaut
    En fait, c'est pour gérer le drag and drop entre 2 JPanel.
    Cela marche bien si je clique sur le panel A pour le mettre sur le panel B.
    Mais si je prend le JLabel ( sur le panel A), il ne se passe rien.
    Voici le bout de mon code.

    Appel de mes 2 Panels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TransferHandler_picHandler = new TransferHandler();
    PersoPanel panel1 = new PersoPanel();
    PersoPanel panel2 = new PersoPanel ();
    panel1.setTransferHandler( _picHandler );
    panel2.setTransferHandler( _picHandler );
     
    setLayout( new BorderLayout() );
    add(panel1 , BorderLayout.NORTH );
    add( panel2, BorderLayout.CENTER );
    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
     
    public class PersoPanel extends JPanel implements MouseMotionListener, MouseListener
    {
    	public PersoPannel()
    	{
    		super();
    		BorderLayout borderLayout = new BorderLayout();
    		setLayout( borderLayout );
    		setSize( new Dimension( 500, 18 ) );
    		addMouseListener(this);
    		addMouseMotionListener(this);
            	add( getJPanelLabel(), BorderLayout.CENTER );
    	}
     
    	private JPanel getJPanelLabel()
    	{
    		if( jPanelLabel == null )
    		{
    			FlowLayout flowLayout = new FlowLayout();
    			flowLayout.setAlignment( FlowLayout.LEFT );
    			flowLayout.setHgap( 0 );
    			flowLayout.setVgap( 5 );
    			jPanelLabel = new JLabel();
    			jPanelLabel.setText( "Texte" );
    			jPanelLabel.setOpaque( true );		
    		}
    		return jPanelLabel;
    	}
     
    	public void mouseDragged( MouseEvent e )
    	{
    		if( firstMouseEvent != null )
    		{
    			e.consume();
     
    			int ctrlMask = InputEvent.CTRL_DOWN_MASK;
    			int action = ( ( e.getModifiersEx() & ctrlMask ) == ctrlMask ) 			? TransferHandler.COPY
    					: TransferHandler.MOVE;
     
    			int dx = Math.abs( e.getX() - firstMouseEvent.getX() );
    			int dy = Math.abs( e.getY() - firstMouseEvent.getY() );
    			if( dx > 5 || dy > 5 )
    			{
    				JComponent c = (JComponent) e.getSource();
    				System.out.println( "panel " + c );				
    				TransferHandler handler = c.getTransferHandler();
    				handler.exportAsDrag( c, firstMouseEvent, action );
    				firstMouseEvent = null;
    			}
    		}
    	}
     
    	public void mouseMoved( MouseEvent e )
    	{
    	}
     
    	public void mousePressed( MouseEvent e )
    	{
    		System.out.println( "mousePressed" );
    		firstMouseEvent = e;
            	e.consume();
    	}
     
    	public void mouseReleased(MouseEvent e) 
    	{
    		firstMouseEvent = null;
    	}
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2008, 21h31
  2. comment faire une action sur JPanel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/01/2007, 13h13
  3. JPanel sur JPanel contenant des JButton
    Par loic_86 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/05/2006, 21h49
  4. FocusListener sur JPanel et son contenu
    Par Invité dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 11/05/2006, 15h23
  5. mousepressed sur un bouton
    Par bibx dans le forum Composants
    Réponses: 8
    Dernier message: 11/05/2004, 12h53

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