Newsgroup: it.comp.java
Titolo: Sapere quando si preme enter su una ComboBox

Come faccio a sapere quando viene premuto enter su una combo box ?
col classico KeyListener non funziona e neanche da actionListener riesco 
a individuare l'evento.
Come faccio?

 ha scritto nel messaggio
news:3E78B30...@libero.it...

Prova con il java.awt.event.KeyAdapter:
  KeyAdapter ascoltatore = new KeyAdapter()
  {
    public void keyTyped(KeyEvent e)  //Catturo l'evento
    {
      if (e.getKeyChar()==10)  //Se il tasto schiacciato è invio
        System.out.println("Premuto invio!");
    }
  };
  laTuaCombobox.addKeyListener(ascoltatore);
Così dovrebbe andare.
Ciao!


ho provato, non funge

 
Da ciň che ho capito, bisogna che la combo sia editabile per 
intercettare l'evento
Ho provato anche con processKeyEvent, ma non va lo stesso

 Ho provato anche con processKeyEvent, ma non va lo stesso
Veramente a me funziona, magari il problema non sta in quel punto. Prova
questo codice...
import java.awt.Frame;
import java.awt.Choice;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Untitled1
{
  public static void main(String[] par)
  {
    Frame f = new Frame();
    Choice c = new Choice();
    KeyAdapter ascoltatore = new KeyAdapter()
    {
      public void keyTyped(KeyEvent e)  //Catturo l'evento
      {
        if (e.getKeyChar()==10)  //Se il tasto schiacciato è invio
          System.out.println("Premuto invio!");
      }
    };
    c.addKeyListener(ascoltatore);
    c.add("Uno"); c.add("due"); c.add("tre");
    f.add(c); f.setSize(100,100);
    f.setVisible(true);
  }
}

 questo codice...
...
...
Bo, io usavo le swing.
Ora ho risolto, ho reso editabile il tutto, ma ho tolto il cursore messo
il keylistener.
A me in realtà serviva che in un campo combo di una form premendo invio 
si passasse il focus al component successivo, proprio come con tab.
Ho fatto una zozzeria, che però funziona :-P
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.util.*;
import java.awt.*;
public class JComboBoxUC extends JComboBox implements KeyListener{
   public JComboBoxUC() {
     super();
     setup();
   }
   public JComboBoxUC(ComboBoxModel aModel) {
     super(aModel);
     setup();
   }
   public JComboBoxUC(Object[] items) {
     super(items);
     setup();
   }
   public JComboBoxUC(Vector items) {
     super(items);
     setup();
   }
   private void setup(){
     setEditable(true);
     JTextComponent ed= (JTextComponent)editor.getEditorComponent();
     ed.addKeyListener(this);
     ed.getCaret().deinstall(ed);
   }
   private void filterKeys(KeyEvent e){
     char c = '\0';
     if(Character.isDefined((c=e.getKeyChar()))){
       selectWithKeyChar(c);
       selectedItemChanged();
     }
     switch(e.getKeyCode()){
       case(KeyEvent.VK_ENTER):
         if(e.getID() == KeyEvent.KEY_RELEASED){
           Component cc = getNextFocusableComponent();
           if(cc!=null){ cc.requestFocus(); e.consume();}
           else e.setKeyCode(KeyEvent.VK_TAB);
         }
         break;
       case(KeyEvent.VK_UP):
       case(KeyEvent.VK_DOWN):
       case(KeyEvent.VK_TAB):
       case(KeyEvent.VK_ESCAPE):
         break;
       default:
         e.consume();
       break;
     }
   }
     public void keyTyped(KeyEvent e){
       filterKeys(e);
     }
     public void keyReleased(KeyEvent e){
       filterKeys(e);
     }
     public void keyPressed(KeyEvent e){
       filterKeys(e);
     }
}