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 :

[SWING~JTable] Récupération d'un KeyListener


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut [SWING~JTable] Récupération d'un KeyListener
    Bonjour,

    J'ai un petit soucis avec une JTable.
    J'ai surchargé la méthode prepareRenderer d'une JTable de manière à utiliser
    un JTextArea pour l'édition des Strings.
    Ca marche sauf sur un point: la touche entrée.
    En effet dès que j'essaye d'inserer un saut de page un ActionListener récupère l'évenement
    valide la modification et me fait passer à la cellule suivante.
    Je pensais qu'il s'agissait d'un KeyListener accroché à la JTable mais la méthode getKeyListeners ne me donne aucun retour sur la JTable et selon le debugger il n'y a pas de listeners accroché à cette JTable.
    Si qq'un à une idée du propriétaire de cet ActionListener ca m'intéresse.

    merci!

  2. #2
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut work in progress...
    J'arrive maintenant à bypasser l'action par défaut de la JTable (changement de cellule) mais le fait d'appuyer sur la touche entrée termine toujours la session d'édition et ne permet pas d'avouter de saut de page.


    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
            // Columns titles
            final String[] names = {
              "Schema",
              "Instructions"
    	};
     
    	ImageIcon object_AA = new ImageIcon(getClass().getResource("/Images/Sac.jpg"));
    	ImageIcon object_AB = new ImageIcon(getClass().getResource("/Images/Bob.jpg"));
     
            // Create the dummy data (a few rows of names)
            final Object[][] data00 = {
    	  {object_AA,"blabla blabla\nbla\nbla\nbla..."},
    	  {object_AB,"Blabla blabla\nBla\nBla\nBla..."}
            };
     
            // Create a model of the data.
            dataModel00 = new AbstractTableModel() {
                public int getColumnCount() { return names.length; }
                public int getRowCount() { return data00.length;}
                public Object getValueAt(int row, int col) {return data00[row][col];}
                public String getColumnName(int column) {return names[column];}
                public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
    	    public boolean isCellEditable(int row, int col) {return true;}
                public void setValueAt(Object aValue, int row, int column) { data00[row][column] = aValue; }
             };
     
            // Create a JTable with custom Renderer.
            this.elementsTable=new JTable(dataModel00){
                public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                    Component c=null;
                    JTextArea textArea=null;
                    JButton schemaButton=null;
                    Object value = getValueAt(row, column);
                    int offset = 0;
                    if (value instanceof String){
                        textArea=new JTextArea((String) value);
                        c=textArea;
                    }else if (value instanceof ImageIcon){
                        schemaButton=new JButton((ImageIcon) value);
                        c=schemaButton;
                    }else{
                        System.out.println("ISInstructionPanel: Unexepected Object!");
                    }
                    // Set background colors
                    if(c!=null){
                        if(getSelectedRow()==row){
                            c.setBackground(getSelectionColor(0));
                            Font cFont = new Font(c.getFont().getFontName(),Font.BOLD,c.getFont().getSize());
                            c.setFont(cFont);
     
                        }
                        else if ((row%2)==0) {
                            c.setBackground(getForegroundColor(75));
                        } else {
                            c.setBackground(getForegroundColor(150));
                        }
                    }
     
                    return c;
                }
            };
            this.elementsTable.setRowHeight(100);
            this.elementsTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            packColumns(this.elementsTable,2);
            this.elementsScrollTable = new JScrollPane(this.elementsTable);
            this.elementsTable.setCellSelectionEnabled(true);
     
             Action DummyAction = new AbstractAction("DummyAction") {
              public void actionPerformed(ActionEvent e) {
                  System.out.println("DummyAction");
             }
             };
             this.elementsTable.getActionMap().put("DummyAction", DummyAction);
             this.elementsTable.getInputMap().put(
                     javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ENTER,0),
                     "DummyAction");

  3. #3
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut Solution!
    La réponse détaillée à mon problème:

    http://www.javaspecialists.co.za/arc...6&locale=en_US

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/07/2011, 16h22
  2. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  3. [Swing / JTable] Rendre les cellules d'un JTable non éditables
    Par Jérôme_20 dans le forum Composants
    Réponses: 20
    Dernier message: 10/02/2011, 10h32
  4. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  5. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51

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