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] Récupération de la valeur saisie


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut [JTable] Récupération de la valeur saisie
    Salut,

    Oui je connais getValue();

    J'ai une table avec un model je voudrai savoir quels sont les solutions pour récupérer ce que je tape dans ma cellule. Sachant que le getValue() va récupérer la valeur de mon model, ou la valeur de la cellule une fois que celle-ci est validée. Et moi je veux récupérer ce que je viens de saisir.

    MERCI.

  2. #2
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    J'ai trouvé une personne avec le même problème que le mien et une solution... Qui ne foncitonne pas chez moi...

    RC wrote:
    > I found out if you editing a JTable cell without hit
    > the Enter or Tab key. Then the new cell value won't take
    > effect. For example, a table cell value is "abc" and
    > you change it to "xyz".

    The problem is, that in this case the cell editor's stopCellEditing()
    method is not called. See also the API doc of CellEditor#stopCellEditing()

    > Then when you read that table
    > cell value, it still "abc". You MUST hit the Enter or
    > Tab key, then you will get that table cell value as "xyz".

    > How can I force that table cell value as "xyz" WITHOUT
    > hit the Enter or Tab key?

    You have to call your cell editor's stopCellEditing() method at appropriate
    times (probably when the cell looses keyboard focus):
    JTable yourTable = ...;
    if (yourTable.isEditing())
    yourTable.getCellEditor().stopCellEditing();

    Or simpler: somewhere at the beginning you tell your JTable to do those
    stopCellEditing calls automatically for you:
    yourTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

    --
    Peut etre que le problème posé de cette manière pourrai vous inspirer!!

    Merci!!

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu peux essayer avec un listener sur le textfield qui sert pour le celleditor.

    Voici un petit bout de code pour illustrer tout ca.

    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
    public class TJTable {
     
    	static final String[] COLUMN_NAMES = {
    		"Col 1",
    		"Col 2",
    		"Col 3"
    	};
     
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		String[][] values = new String[10][3];
    		for (int i=0;i<values.length;++i) {
    			for (int j=0;j<values[i].length;++j) {
    				values[i][j] = "Cell "+i+","+j;
    			}
    		}
    		DefaultTableModel model = new DefaultTableModel(values, COLUMN_NAMES);				
    		JTable table = new JTable(model);				
    		frame.getContentPane().add(table, BorderLayout.CENTER);
     
    		JTextField textfield = new JTextField();
    		textfield.setForeground(Color.red);
    		textfield.getDocument().addDocumentListener(new DocumentListener() {
     
    			public void changedUpdate(DocumentEvent e) {
     
    				printText(e);
    			}
     
    			public void insertUpdate(DocumentEvent e) {				
    				printText(e);
    			}
     
    			public void removeUpdate(DocumentEvent e) {				
    				printText(e);
    			}
     
    			private void printText(DocumentEvent e) {				
    				Document doc = e.getDocument();
    				String text = null;
    				try {
    					text = doc.getText(0, doc.getLength());
    				} catch (BadLocationException e1) {
    					e1.printStackTrace();
    				}
    				System.out.println("Text : "+text);
    			}
     
    		});
     
     
    		DefaultCellEditor editor = new DefaultCellEditor(textfield);		
    		table.setDefaultEditor(Object.class, editor);			
     
    		frame.pack();
    		frame.setVisible(true);
     
    	}
    }

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

Discussions similaires

  1. JTable vérification de la valeur saisie
    Par st3ph-g dans le forum Composants
    Réponses: 9
    Dernier message: 29/04/2011, 15h26
  2. Récupération de la valeur saisie lors d'un onKeyPress
    Par Mat67 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/08/2008, 11h51
  3. Réponses: 1
    Dernier message: 22/06/2008, 16h32
  4. Réponses: 5
    Dernier message: 26/12/2007, 11h13
  5. Réponses: 7
    Dernier message: 08/03/2007, 20h05

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