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

Composants Java Discussion :

JTable avec 2 Editors : pour clic Droit et clic Gauche


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut JTable avec 2 Editors : pour clic Droit et clic Gauche
    Bonjour,

    J' ai une JTable avec un Editor qui permet de modifier certaines valeurs de l'objet qui s'affiche dans la cellule. L'editor étend JButton et la cellule est éditée avec le clic gauche; les modifications de valeurs se font dans un panel avec des JtextField etc.

    Comment faire pour que l'editor fournisse un autre panel (panelDroit) lors d'un clic Droit?

    Bien entendu,pour l'instant,le clic gauche marche, mais pas le clic droit.... Le clic droit n'est pas détecté.

    Pour l'instant j'en suis là :

    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
     
       class EditorHoraire extends AbstractCellEditor implements TableCellEditor, ActionListener {
     
    //panelDroit (marche pas)
            PanelEditorConge panneauConge = null;
    //panelGauche (marche)
            PanelEditorHoraire panneauHoraires = null;
            private ArrayList<Horaire> horaires = null;
            private JButton button = null;
            protected static final String EDIT = "edit";
            protected static final String EDIT2 = "edit2";
     
            public EditorHoraire() {
     
                button = new JButton();
                button.addMouseListener(new MouseAdapter() {
     
                    public void mousePressed(MouseEvent e) {
                        int buttonDown = e.getButton();
     
                        if (buttonDown == MouseEvent.BUTTON1) {
                            button.setActionCommand(EDIT);
                            button.addActionListener(EditorHoraire.this);
                            button.setBorderPainted(false);
                            //renderer = new RendererColumnHoraireHaut();
                            panneauHoraires = new PanelEditorHoraire();
                            panneauHoraires.setModal(true);
                        } else if (buttonDown == MouseEvent.BUTTON2) {
                           //bouton du milieu : je n'utilise pas
                        } else if (buttonDown == MouseEvent.BUTTON3) {
                            button.setActionCommand(EDIT);
                            button.addActionListener(EditorHoraire.this);
                            button.setBorderPainted(false);
                            //renderer = new RendererColumnHoraireHaut();
                            panneauHoraires = new PanelEditorHoraire();
                            panneauHoraires.setModal(true);
                        }
     
                    }
                });
     
            }
     
            @Override
            public Object getCellEditorValue() {
     
                //arrayhoraire 2 verifié
                return horaires;
            }
     
            @Override
            public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
                horaires = (ArrayList<Horaire>) value;
                return button;
            }
     
            @Override
            public boolean shouldSelectCell(EventObject ev) {
                return true;
            }
     
            @Override
            public void cancelCellEditing() {
                panneauHoraires.dispose();
                super.cancelCellEditing();
            }
     
            @Override
            public boolean stopCellEditing() {
                panneauHoraires.dispose();
                super.stopCellEditing();
                return true;
            }
     
            @Override
            public void actionPerformed(ActionEvent e) {
     
                if (EDIT.equals(e.getActionCommand())) {
                   System.err.println(e.getActionCommand());
                    panneauHoraires.setUtil(new Utilisateur());
                    panneauHoraires.setDatestring("");
                    DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, Locale.FRANCE);
                    panneauHoraires.setArrayHoraire(horaires);
                    Utilisateur util = horaires.get(0).getUtilId();
                    String datestring = df.format(horaires.get(0).getDebut());
                    panneauHoraires.setDatestring(datestring);
                    panneauHoraires.setUtil(util);
                    panneauHoraires.setVisible(true);
                    //horaires 2 verifié
                    this.fireEditingStopped(); //Make the renderer reappear.
                }
     
                 else if (EDIT2.equals(e.getActionCommand())){
                      System.err.println(e.getActionCommand());
                 }
     
                else { //User pressed dialog's "OK" buttonRetour.
                    horaires = panneauHoraires.getArrayHoraire();
                }
     
        };
    }

    Merci d'avance pour toutes les réponses.

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Salut !

    J'ai noté ceci à propos des boutons... je ne sais pas si ça peut être utile... ou même si ça répond à la question... à voir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Bouton Action performed / MouseEvent(e...)
     
       if (SwingUtilities.isLeftMouseButton(evt)) {   
       if (SwingUtilities.isRightMouseButton(evt)) {      
     
      mieux que clic droit : isPopupTrigger  pour tous les
      systèmes, même ceux qui  n'utilisent pas clic droit (Mac par ex. )
    bonne semaine !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut Table avec 2 Editors : pour clic Droit et clic Gauche
    Bonjour,

    Merci pour cette réponse mais j'ai déjà essayé.

    Je pense que le premier problème est que le bouton de réagit pas graphiquement au clic droit.

    Existe-t-il un moyen?

    Merci

  4. #4
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    salade de else ?
    comme ça ?

    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
     
       if (buttonDown == MouseEvent.BUTTON1) {
                button.setActionCommand(EDIT);
                button.addActionListener(EditorHoraire.this);
                button.setBorderPainted(false);
                          //renderer = new RendererColumnHoraireHaut();
                panneauHoraires = new PanelEditorHoraire();
                panneauHoraires.setModal(true);
       }
       else {
             if (buttonDown == MouseEvent.BUTTON2) {
                             //bouton du milieu : je n'utilise pas
             }
             else if (buttonDown == MouseEvent.BUTTON3) {
                     button.setActionCommand(EDIT);
                     button.addActionListener(EditorHoraire.this);
                     button.setBorderPainted(false);
                            //renderer = new RendererColumnHoraireHaut();
                     panneauHoraires = new PanelEditorHoraire();
                     panneauHoraires.setModal(true);
             } 
       }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    En modifiant le code comme c-dessous, le clic droit n"est pas détecté dans la trace (le message est toujours 1, le clic droit ne donne rien). Pourquoi? :

    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
       button.addMouseListener(new MouseAdapter() {
     
                    public void mousePressed(MouseEvent e) {
                        int buttonDown = e.getButton();
     
                          System.err.println(e.getButton());
     
                        if (buttonDown == MouseEvent.BUTTON1) {
                            panneauHoraires = new PanelEditorHoraire();
                            button.setActionCommand(EDIT);
                            button.addActionListener(EditorHoraire.this);
                            button.setBorderPainted(false);
                            //renderer = new RendererColumnHoraireHaut();
                            panneauHoraires.setModal(true);
                        //panneauHoraires.setVisible(true);
                        }
     
                    }
                });

  6. #6
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Bizarre...
    voici ce que je mets dans mon code (avec Netbeans) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        private void jButton1MousePressed(java.awt.event.MouseEvent evt) {                                      
            int buttonDown = evt.getButton();
            JOptionPane.showMessageDialog(null,  buttonDown);                     
        }
    et j'ai le bonne réponse gauche : 1 et droit : 3 !
    dans ton code, remplacer peut-être MouseEvent par java.awt.event.MouseEvent ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Merci pour les réponses.

    Aurai-je un problème des souris?

Discussions similaires

  1. Distinguer le clic droit du clic gauche sur un TTreeView
    Par kimlee dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/11/2009, 13h53
  2. Réponses: 1
    Dernier message: 02/10/2009, 00h17
  3. Réponses: 2
    Dernier message: 26/11/2006, 21h10
  4. [JTable] Simuler clic gauche après clic droit
    Par Oliveuh dans le forum Composants
    Réponses: 1
    Dernier message: 03/12/2004, 12h35
  5. Problème avec le clic droit
    Par nebule dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/10/2004, 16h29

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