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 :

[débutant][Listener] quel listener et comment l'utiliser


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut [débutant][Listener] quel listener et comment l'utiliser
    Bonjour

    Ca fait un moment que je n'ai pas écris sur le forum
    J'ai besoin de vos lumières

    j'aimerai lorsque je selectionne un Onglet de mon TabbedPane récupérer l'index de celui-ci avec ma méthode focus.

    Pour cela, je ne sais quel listener utiliser et comment faire.


    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
     
    public class HautFrame extends JInternalFrame implements ActionListener {
     
    	   private CloseableTabbedPane tabbedPane =new CloseableTabbedPane(false);
    	   private DiTable tableau;
    	   private static final ImageIcon iconFermeture = new ImageIcon("Femelle.gif" );
    	   private Border raisedbevel = BorderFactory.createRaisedBevelBorder();
    	   private Border loweredbevel = BorderFactory.createLoweredBevelBorder();
     
    	   public HautFrame() {
    	   	   super("Espace de travail",false,false,true,false);
    	       setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));
    	       getContentPane().setLayout(new BorderLayout());
    	       getContentPane().setBackground(new Color(255,255,255));
    	       getContentPane().add (tabbedPane,BorderLayout.CENTER);// ajout du Tabbed Pane
    	       setVisible(true);
    	   }
    		/**
                     * Méthode qui parmet d'ajouter un tabbedPane (Onglet)
                     * @param file
                     * @param nomFichierOuvert
                     */
    	    public void ajoutTabbed(String file, String nomFichierOuvert){ 
    	         tableau = new DiTable(file);//ajout du JTable	         
    	         tabbedPane.addTab(nomFichierOuvert,iconFermeture, tableau);
    	         maHashMap.put(file , tableau);
    	         hashMap.put(tableau , file);
    	         tabbedPane.setSelectedComponent(tableau);//pour mettre le focus sur le tabbe Pane à l'ouverture
    	   } 
     
    	    public void focus(){
    	    	int index = tabbedPane.getSelectedIndex();
    	    	MaFrame.getMaFrame().getBasFrame().focusTable(index);
    	    }
     
     
     
    		public void actionPerformed(java.awt.event.ActionEvent e) {
     
    	    }
    	}
    D'avance merci pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Je mettrais un petit mouseListener...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
           tabbedPane.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    focus();
                }
            });
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut
    salut plegat,

    merci pour ton aide mais le mouseListener n'attrappe rien.
    Il ne detecte pas si le focus est sur l'onglet.
    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
     
    	    public void ajoutTabbed(String file, String nomFichierOuvert){ 
    	         tableau = new DiTable(file);//ajout du JTable	         
    	         tabbedPane.addTab(nomFichierOuvert,iconFermeture, tableau);	         
    	         tabbedPane.addMouseListener(new java.awt.event.MouseAdapter() { 
    	             public void mouseClicked(java.awt.event.MouseEvent evt) { 
    	            	 System.out.println("clic " );
    	            	 focus(); 
    	             } 
    	         }); 
    	         maHashMap.put(file , tableau);
    	         hashMap.put(tableau , file);
    	         tabbedPane.setSelectedComponent(tableau);//pour mettre le focus sur le tabbe Pane à l'ouverture
    	   } 
     
    	    public void focus(){
    	    	int index = tabbedPane.getSelectedIndex();
    	    	System.out.println("index "+index );
    	    	MaFrame.getMaFrame().getBasFrame().focusTable(index);
    	    }

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Je ne sais pas ce qu'il y a dans ta classe CloseableTabbedPane...

    Mais j'ai testé sur un JTabbedPane basique, ça marche très bien.

    Par contre, si tu places la création du listener dans la méthode ajoutTabbed(), il faut appeler cette méthode au moins une fois... ce qui n'apparait pas dans le code que tu as montré dans ton premier post.

    Place la création du listener dans ton constructeur de HautFrame plutôt...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut
    En faisant :
    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
     
    	   public HautFrame() {
               //Les quatres booléens contrôlent les propriétés suivantes : 
    	       //retaillable, fermable, maximisable, iconifiable 
    	   	   super("Espace de travail",false,false,true,false);
    	       setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));
    	       getContentPane().setLayout(new BorderLayout());
    	       getContentPane().setBackground(new Color(255,255,255));
    	       tabbedPane.addMouseListener(new MouseAdapter() { 
    	             public void mouseClicked(MouseEvent evt) { 
    	            	 System.out.println("clic " );
    	            	 focus(); 
    	             } 
    	         });
    	       getContentPane().add (tabbedPane,BorderLayout.CENTER);// ajout du Tabbed Pane
    	       setVisible(true);
    	   }
    je n'ai pas de résultat

    La class CloseableTabbedPane me permet d'avoir un tabbedpane un peu plus perfectionné. CloseableTabbedPane extends JTabbedPane

    j'ai essayé plusieur chose pour le listener mais je bloque...

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    J'ai fait ça... qui marche bien... c'est basé sur ton code, en adaptant pour les classes que je n'ai 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import java.awt.*;
    import javax.swing.*;
     
    public class HautFrame extends JFrame {
     
    	private JTabbedPane tabbedPane =new JTabbedPane();
     
    	public HautFrame() {
    		super("Espace de travail");
    		this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    		this.setSize(new java.awt.Dimension(200,200));
     
    		getContentPane().setLayout(new BorderLayout());
    		getContentPane().setBackground(new Color(255,255,255));
    		tabbedPane.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mouseClicked(java.awt.event.MouseEvent evt) {
    				focus();
    			}
    		}); 
     
    		this.ajoutTabbed("Tab 1","");
    		this.ajoutTabbed("Tab 2","");
    		getContentPane().add (tabbedPane,BorderLayout.CENTER);// ajout du Tabbed Pane
    		setVisible(true);
    	}
     
    	public void ajoutTabbed(String file, String nomFichierOuvert){
    		tabbedPane.addTab(file,new JPanel());
    	}
     
    	public void focus(){
    		int index = tabbedPane.getSelectedIndex();
    		System.out.println("index: "+index);
    	}
     
    	public static void main (String[] args)
    	{
    		HautFrame fenetre = new HautFrame();
    	}
    }
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut
    Salut plegat

    Merci pour ton aide.


    Mon souçi, c'est que je fait appel à la méthode ajoutTabbed lorsque J'ouvre un fichier.
    1 fichier en lecture = 1 onglet
    Je ne peut donc faire appel à la méthode ajoutTabbed dans le constructeur.

    ci-dessous le code de CloseableTabbedPane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    **edit pour éviter de prendre trop de place sur le forum.... cf désormais 4 poste en dessous

  8. #8
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par pingoui
    Mon souçi, c'est que je fait appel à la méthode ajoutTabbed lorsque J'ouvre un fichier.
    1 fichier en lecture = 1 onglet
    Je ne peut donc faire appel à la méthode ajoutTabbed dans le constructeur.
    Justement si!
    Le listener que je place est associé au JTabbedPane, pas à l'onglet.
    Il est donc créé avec le JTabbedPane. Et il réagit à chaque sélection d'onglet, quelque soit l'onglet, et quelque soit le nombre d'onglets.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut
    Effectivement !


    Je viens de tester sans mon CloseableTabbedPane et ça marche parfaitement!
    C'est bien lui qui me pose problème!

    Comment puis-je mettre un listener sur mon ClosetabbedPane? (onglet avec croix pour la fermeture)

    :

  10. #10
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Ben il faudrait déjà que l'on sache ce que tu as mis dans ton ClosetabbedPane...
    Si il y a une croix pour la fermeture, il doit déjà y avoir un listener pour gérer ça... Il faudrait faire la différence en fonction de l'endroit où on clique (sur la croix ou pas).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  11. #11
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Par défaut
    Le code du Close TabbedPanne et 4 post au dessus.

    ci-dessous le code de CloseableTabbedPane
    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
     
     
    public class CloseableTabbedPane extends JTabbedPane { 
     
       private int overTabIndex = -1; 
       private CloseTabPaneUI paneUI; 
     
       public CloseableTabbedPane(boolean enhancedUI) { 
          super.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 
          if (enhancedUI) 
             paneUI = new CloseTabPaneEnhancedUI(); 
          else 
             paneUI = new CloseTabPaneUI(); 
     
          super.setUI(paneUI); 
       } 
     
       public int getOverTabIndex() { 
          return overTabIndex; 
       } 
       /** 
        * bloquage de la méthode JTabbedPane 
        */ 
       public void setTabLayoutPolicy(int tabLayoutPolicy) { 
       } 
     
       /** 
        * bloquage de la méthode JTabbedPane 
        */ 
       public void setTabPlacement(int tabPlacement) { 
       } 
     
       /** 
        * Override JTabbedPane method. Does nothing. 
        */ 
       public void setUI(TabbedPaneUI ui) { 
       } 
     
       public void fireCloseTabEvent(MouseEvent e, int overTabIndex) { 
          remove(overTabIndex); 
       } 
    }

  12. #12
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    Citation Envoyé par pingoui
    Comment puis-je mettre un listener sur mon ClosetabbedPane? (onglet avec croix pour la fermeture)

    :
    http://www.infonode.net/index.html?itp

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/12/2011, 22h49
  2. quel listener utiliser
    Par jayjay.f dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/03/2007, 13h17
  3. Réponses: 7
    Dernier message: 23/03/2006, 13h13
  4. [JInternalFrame] quel Listener utilise ?
    Par lanfeustdetroll dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/07/2005, 17h09
  5. [JEditorPane] Quel listener utiliser?
    Par Pill_S dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 27/07/2004, 13h32

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