comment recuperer un texte écrit dans un JComboBox

comment recuperer un texte écrit dans un JComboBox - Java - Programmation

Marsh Posté le 28-03-2004 à 00:08:59    

Bonjour,
voila comme l'explique clairement le titre, je voudrais savoir comment on recupere un texte, saisie au clavier, d'un JComboBox (éditable) car il n'existe pas de methode getText() (comme pour JTextField par exemple).
Merci d'avance.

Reply

Marsh Posté le 28-03-2004 à 00:08:59   

Reply

Marsh Posté le 28-03-2004 à 00:27:12    

http://java.sun.com/docs/books/tut [...] l#editable
 
tu utilises un actionlistener sur le combobox si tu veux récupérer le texte au moment de la validation (avec getSelectedItem()).
 
Pour des besoins plus spécifiques, il faut jouer avec le ComboBoxEditor, mais c'est pour les ceintures noires du swing.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 00:36:20    

non ca c pour recuperer un item du combo box, je veux juste recuperer ce qui est saisi au clavier ( par exemple quand on recupere ce qui est saisi dans un JTextField on fait un getText() mais ici je ne veux pas recuperer un item du combo box, mais recuperer ce que j'ai saisi dans le combo box à savoir le combo box est editable, i.e on peut ecrire dedans)

Reply

Marsh Posté le 28-03-2004 à 00:49:41    

Tu as testé ? La doc dit que ça lance l'événement lors de l'appui sur [entrée].
 
http://java.sun.com/j2se/1.4.2/doc [...] ctedItem()

Citation :

If the combo box is editable, then this value may not have been added to the combo box with addItem, insertItemAt or the data constructors.


 
dans le tutorial :

Citation :

An editable combo box fires an action event when the user chooses an item from the menu and when the user types Enter. Note that the menu remains unchanged when the user enters a value into the combo box. If you want, you can easily write an action listener that adds a new item to the combo box's menu each time the user types in a unique value.


 
J'ai la flemme de tester, mais je sens bien que ça marche comme ça quand même.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 01:08:58    

Merci, c'est à peut près ce que je recherche.
mais est-ce que c'est possible de recuperer la valeur pendant la saisie au clavier (sans taper sur entrer)

Reply

Marsh Posté le 28-03-2004 à 01:11:37    

sironimo a écrit :

Merci, c'est à peut près ce que je recherche.
mais est-ce que c'est possible de recuperer la valeur pendant la saisie au clavier (sans taper sur entrer)

peut-être, essaye avec (String)cbb.getEditor().getItem()  
 
et vient me filer la réponse STP.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 01:23:33    

je suis quand meme obligé de cliquer autre part pour recuperer la valeur.
tu sais sous internet explorer, quand tu commence a entrer une adresse, t'a la liste deroulante qui s'affiche par rapport à ce que t'a commencer a ecrire (quand tu tape www.g ben il t'affiche tous les sites où t'a ete qui a pour adresse qui commence par www.g) et au fur a mesure que tu rentre des lettres la liste diminue.
c'est à peut près ce que je cherche à faire (pendant la saisie et non après).

Reply

Marsh Posté le 28-03-2004 à 01:33:05    

sironimo a écrit :

je suis quand meme obligé de cliquer autre part pour recuperer la valeur.
tu sais sous internet explorer, quand tu commence a entrer une adresse, t'a la liste deroulante qui s'affiche par rapport à ce que t'a commencer a ecrire (quand tu tape www.g ben il t'affiche tous les sites où t'a ete qui a pour adresse qui commence par www.g) et au fur a mesure que tu rentre des lettres la liste diminue.
c'est à peut près ce que je cherche à faire (pendant la saisie et non après).
 


 
keyListener?

Reply

Marsh Posté le 28-03-2004 à 01:54:44    

ca marche pas avec un combobox

Reply

Marsh Posté le 28-03-2004 à 03:02:51    

sironimo a écrit :

ca marche pas avec un combobox


 

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JComboBox


 
java/awt/Component.html#addKeyListener(java.awt.event.KeyListener)
 
 [:negueu]


Message édité par veryfree le 28-03-2004 à 03:03:00
Reply

Marsh Posté le 28-03-2004 à 03:02:51   

Reply

Marsh Posté le 28-03-2004 à 03:09:36    

tu peux faire combo.addKeyListener...
mais tu ne peux pas recuperer au fur et a mesure ce qui est saisie contrairement à un jtextfield par exemple

Reply

Marsh Posté le 28-03-2004 à 03:28:05    

oué, voici le pb :
les Combobox ne savent pas qu'ils touchent à des String (ils pourraient par exemple manipuler des schémas techniques avec la même infrastructure, en utilisant un Renderer et un Editor kivonbien), ils sont cablés sur un ComboBoxEditor qui lui sait ce qu'il manipule. Il faut donc que tu passes pas un ComboboxEditor custom.
 
mon conseil : va voir me code source de BasicComboBoxEditor, qui est assez court, et pompe l'idée en y ajoutant ta ListOfValues (c'est le nom courant du truc que tu veux ajouter).
 
 
edit : typo


Message édité par nraynaud le 28-03-2004 à 03:29:42

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 15:10:58    

et si ca ne te derange pas, ou je peux trouver ton code source?

Reply

Marsh Posté le 28-03-2004 à 21:19:53    

sironimo a écrit :

et si ca ne te derange pas, ou je peux trouver ton code source?

heu je dois t'avouer que je l'ai eu là : https://connect.apple.com/
 
mais ça doit être sur le site de sun pour les autres palteformes.
 
je vais faire un truc illégal pour pas que tu te fasses chier :

Code :
  1. /*
  2. * @(#)BasicComboBoxEditor.java 1.25 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package javax.swing.plaf.basic;
  8. import javax.swing.*;
  9. import javax.swing.border.Border;
  10. import javax.swing.text.AttributeSet;
  11. import javax.swing.text.BadLocationException;
  12. import javax.swing.text.PlainDocument;
  13. import java.awt.*;
  14. import java.awt.event.*;
  15. import java.lang.reflect.Method;
  16. /**
  17. * The default editor for editable combo boxes. The editor is implemented as a JTextField.
  18. *
  19. * @version 1.25 01/23/03
  20. * @author Arnaud Weber
  21. * @author Mark Davidson
  22. */
  23. public class BasicComboBoxEditor implements ComboBoxEditor,FocusListener {
  24.     protected JTextField editor;
  25.     private Object oldValue;
  26.     public BasicComboBoxEditor() {
  27.         editor = new BorderlessTextField("",9);
  28.         editor.setBorder(null);
  29.     }
  30.     public Component getEditorComponent() {
  31.         return editor;
  32.     }
  33.     /**  
  34.      * Sets the item that should be edited.  
  35.      *
  36.      * @param anObject the displayed value of the editor
  37.      */
  38.     public void setItem(Object anObject) {
  39.         if ( anObject != null )  {
  40.             editor.setText(anObject.toString());
  41.            
  42.             oldValue = anObject;
  43.         } else {
  44.             editor.setText("" );
  45.         }
  46.     }
  47.     public Object getItem() {
  48.         Object newValue = editor.getText();
  49.        
  50.         if (oldValue != null && !(oldValue instanceof String))  {
  51.             // The original value is not a string. Should return the value in it's
  52.             // original type.
  53.             if (newValue.equals(oldValue.toString()))  {
  54.                 return oldValue;
  55.             } else {
  56.                 // Must take the value from the editor and get the value and cast it to the new type.
  57.                 Class cls = oldValue.getClass();
  58.                 try {
  59.                     Method method = cls.getMethod("valueOf", new Class[]{String.class});
  60.                     newValue = method.invoke(oldValue, new Object[] { editor.getText()});
  61.                 } catch (Exception ex) {
  62.                     // Fail silently and return the newValue (a String object)
  63.                 }
  64.             }
  65.         }
  66.         return newValue;
  67.     }
  68.     public void selectAll() {
  69.         editor.selectAll();
  70.         editor.requestFocus();
  71.     }
  72.     // This used to do something but now it doesn't.  It couldn't be
  73.     // removed because it would be an API change to do so.
  74.     public void focusGained(FocusEvent e) {}
  75.    
  76.     // This used to do something but now it doesn't.  It couldn't be
  77.     // removed because it would be an API change to do so.
  78.     public void focusLost(FocusEvent e) {}
  79.     public void addActionListener(ActionListener l) {
  80.         editor.addActionListener(l);
  81.     }
  82.     public void removeActionListener(ActionListener l) {
  83.         editor.removeActionListener(l);
  84.     }
  85.     static class BorderlessTextField extends JTextField {
  86.         public BorderlessTextField(String value,int n) {
  87.             super(value,n);
  88.         }
  89.         // workaround for 4530952
  90.         public void setText(String s) {
  91.             if (getText().equals(s)) {
  92.                 return;
  93.             }
  94.             super.setText(s);
  95.         }
  96.         public void setBorder(Border b) {}
  97.     }
  98.    
  99.     /**
  100.      * A subclass of BasicComboBoxEditor that implements UIResource.
  101.      * BasicComboBoxEditor doesn't implement UIResource
  102.      * directly so that applications can safely override the
  103.      * cellRenderer property with BasicListCellRenderer subclasses.
  104.      * <p>
  105.      * <strong>Warning:</strong>
  106.      * Serialized objects of this class will not be compatible with
  107.      * future Swing releases. The current serialization support is
  108.      * appropriate for short term storage or RMI between applications running
  109.      * the same version of Swing.  As of 1.4, support for long term storage
  110.      * of all JavaBeans<sup><font size="-2">TM</font></sup>
  111.      * has been added to the <code>java.beans</code> package.
  112.      * Please see {@link java.beans.XMLEncoder}.
  113.      */
  114.     public static class UIResource extends BasicComboBoxEditor
  115.     implements javax.swing.plaf.UIResource {
  116.     }
  117. }


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 22:05:14    

Je te remercie de m'avoir aider

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed